向用户显示 Parse 对象 ID 有多糟糕?

How bad is it to show Parse object id's to user?

我的 iOS 应用程序中有一个内置的二维码扫描仪。我的后端运行在 Parse 上,我希望用户能够在应用程序上选择某些对象并将它们的 ID 编码为 QR 码并共享它,以便用户以后可以扫描 QR 码、接收对象 ID 并进行查询他们在数据库中稍后获取并显示在某个地方。

但是,是什么阻止了某人在我的应用程序之外使用 QR 扫描仪、查看编码到 QR 中的对象 ID 并搞砸了某些事情?以某种方式允许用户查看 Parse 数据库中条目的对象 ID 有多糟糕?这会严重损害安全性吗?

我考虑过对对象 ID 进行加密,但担心我的应用程序会因为未遵循适当的标准而被 Apple 拒绝。大家有什么建议吗?

简答:

泄露对象 ID 没有重大安全风险。除非第 3 方可以访问您的应用程序密钥,否则他们将无法访问您的数据,即使他们已经知道所有相关信息。只要您妥善隐藏您的应用程序密钥,您的用户就无法更改您所提供的任何内容

请记住,您的对象 ID 仅在您的应用程序范围内是唯一的(甚至可能仅在该特定 class 的范围内),因此当他们找到对象 ID 时,他们不知道是否这是你的应用程序、我的应用程序或其他任何人的应用程序 - 对他们来说,它就像保存一组随机数字一样有用。

我要说的更大问题是您无法设置对象 ID,因此如果该行由于某种原因被删除,您可以恢复它的每一部分,但它们都有不同的对象 ID。这意味着您的用户 运行 周围有毫无意义的 QR 码。当然你可以从备份中恢复,但你会丢失此后的任何其他更改。这就是为什么我 永远不会 推荐使用对象 ID 建立索引,而不是创建一个新的列 "ID" 然后可以由您更改,然后编写一段云代码的脚本侧面的逻辑以确保它是唯一的。

共享对象 ID 不是问题,只要您的应用具有适当的安全性即可。希望您的应用程序的安全性不依赖于对对象 ID 保密。

在 iOS 应用程序中加密没有问题,只要您提交适当的文件即可。我的一个应用程序使用了非常高级别的加密,并且在除法国以外的每个国家/地区都可用。您只需要提交正确的文件,这并不难。