如何在IOS中识别用户

时间:2013-10-29 19:04:29

标签: ios security apple-push-notifications

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

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

如果没有办法,我怎样才能确定有人不仅仅是将POSTS发送到我的服务器,从而让我创建不存在的设备数据库对象?

我找到的唯一安全方法是:

1-让应用程序向APN请求设备令牌 2-发送它与我的服务器的第一次连接。 3-检查APNs反馈服务 4-如果令牌没问题,请创建设备数据库对象并从那里继续。

每当有人下载​​应用时,Apple都应该让您知道Apple与您的服务器之间的通信中的某些设备供应商ID。

谢谢。

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

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

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

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

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

当然,如果我们正在谈论一个被囚禁的设备,那么所有的赌注都会被取消。