-1

我们正在为 IOS 开发一个应用程序。

无论如何我可以检查设备在第一次连接到我的服务器时发送给我的“identifierForVendor”实际上是否有效?

如果没有办法,我如何确保有人不只是将 POSTS 发送到我的服务器,从而让我创建实际上并不存在的设备 DB 对象?

我发现的唯一安全方法是:

1- 让应用程序向 APNs 请求设备令牌 2- 在它第一次连接到我的服务器时发送它。3- 检查 APNs 反馈服务 4- 如果令牌正常,则创建设备 DB 对象并从那里继续。

每次有人下载应用程序时,Apple 应该在 Apple 和您的服务器之间的通信中让您知道一些 Device-Vendor Id。

谢谢你。

4

2 回答 2

0

您是否知道注册远程通知会提示用户是否要允许应用程序的远程通知。如果他们选择否,则不会生成令牌。

此外,他们可以从电线上嗅出令牌。您是否计划根据用户的令牌跟踪滥用和阻止用户?您是否知道某些操作会导致生成新的令牌,例如重置设备?

您可以生成唯一 ID (UUID) 或使用identifierForVendor,并将其存储在用户的密钥库中,并使用它来按设备进行跟踪。它仍然是匿名的,重置设备会重置它,但如果你正在跟踪滥用者,你可以阻止他们,他们必须重置他们的设备才能重试。这与 APN 令牌没有太大区别。它仍然可以被嗅探,他们仍然可以重置它。但至少用户不必同意允许远程通知。

如果您要发送任何类型的令牌,则应使用 HTTPS (SSL/TLS),而不是保护用户免受自己的侵害(他们仍然可以通过自己的中间人攻击来嗅探令牌,除非您正在验证身份服务器),但这是为了保护人们免受同一网络上的恶意用户的侵害。您不想阻止一些无辜的用户,因为他们碰巧在公共网络上使用您的应用程序并无意中共享了他们的令牌。

当然,如果我们谈论的是越狱设备,那么所有的赌注都没有了。

于 2013-10-30T02:25:56.600 回答
0

最简单的解决方案是在“identifierForVendor”附加一些您可以从您的应用程序中识别的内容。例如,如果您将一个如下所示的字母数字字符串:“A1B2C3D4E5F6G7”附加为“A1B2C3D4E5F6G7-fromMyApp”,那么除非他们有权访问您的代码,否则某人无法知道自定义附加字符串是什么。

当然还有更复杂的解决方案,如果你真的担心人们会监控你的应用程序的流量只是为了找到字符串。

于 2013-10-29T19:28:17.090 回答