我们希望使用 UDID 针对 iOS 应用程序的服务器端 Web 服务对用户进行身份验证。我担心的是,用户会尝试通过使用随机 UDID 值进行身份验证尝试来强行访问另一个用户的帐户。我可以处理诸如限制他们的请求之类的事情,但是我很好奇是否有办法发出“签名”请求。
意思是,有没有一种方法可以证明具有 UDID foo 的客户端是从 UDID foo 所属的设备生成和发送的,而不是一些可以访问 curl 和 ruby 脚本多次调用我的服务的随机用户?
我想我要找的是一个签名的 http 请求。不过,我不确定从哪里开始在客户端或服务器上构建此类支持。
最佳答案
那些 GUID 很大。猜对的机会似乎非常渺茫。我猜要花几千年的时间才能“随机”遇到一个。
您几乎肯定会面临更大的风险,即有人嗅探现有设备或使用他们对用户设备的访问权限来获取它。
老实说,考虑到获取用户的 udid 是多么容易,如果 Apple 不建议不要以这种方式使用它,我会感到惊讶。
我只需要通过电子邮件向您的一位用户发送我的“超酷新免费游戏”链接,砰我就搞定了。
或者,坐在咖啡店里嗅探 WiFi 流量 - 等待一些广告赞助的游戏通过无线发送 udid 以进行跟踪。
但是……
客户端 SSL 证书怎么样?
How to use Client Certificate Authentication in iOS App
或签名的 XML 文档?
http://en.wikipedia.org/wiki/XML_Signature
老实说,在这方面您能做的只有这么多。
你永远无法阻止一个真正下定决心的坏人破解你的 .ipa 并提取客户端 ssl 证书 - 或者你必须阻止某人的任何其他机制。
我只是说 - 因为您正在分发应用程序(这不是在互联网上点对点运行的内部应用程序),所以真的没有办法真正保护客户端(移动)端代码- 因此,无法真正确保只有授权客户才向您的服务提出请求。
最终,安全的重担落在了您的服务上。
关于iphone - 从 iOS 设备到 Web 服务的签名请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6591168/