我知道这是一种流行的问题,但我找不到任何其他问题来解决我的具体需求。
! 如果你失去兴趣,请跳到最后询问问题:) !
创意1:
*创意2 :(一次性使用API_Token)*
我相信iOS已经没有完美的UUID解决方案了。如果UUID可能随时间发生变化(或者如果用户有多个iOS设备),则可能会出现身份验证问题。
如果黑客获得API密钥,我不希望他们能够访问数据(因此到期或新的令牌想法)。
您有什么建议在Rails和iOS之间创建安全的API?
编辑1:
我仍然感到惊讶,这不是一直出现的事情。必须有大量的应用程序与API通信但不强制用户注册。如果SSL或OAuth是唯一的正确的解决方案,请进行辩护。我听见了。
答案 0 :(得分:2)
除了跨设备跟踪用户的问题,我不知道如何提供一个相当简单和可靠的机制,而不是Game Center帐户,让我们讨论一种将API关闭到其他应用程序的简单方法。
握手将涉及您的客户提交URL请求,该请求可能已包含特定于设备的令牌以识别您的用户。来自服务器的响应将是一个字符串形式的随机一次性挑战。客户端和服务器都知道一个非平凡的函数,它根据质询和可能的用户令牌生成响应字符串,从而验证客户端。
该机制绝不安全,但实施起来微不足道,并将为其他机制提供一些障碍。您绝对应该验证用户令牌的形式以获得一些额外的保护。例如,如果您的令牌是MAC地址,则请求必须具有MAC地址的形式。
答案 1 :(得分:1)
我最终根据我在网上找到的一些建议推出了自己的解决方案(参见最后的参考链接)。
@keighl的这个GitHub Gist是让我失望的原因,是迄今为止我找到的最好的例子: https://gist.github.com/4336694
Railscast:保护API: http://railscasts.com/episodes/352-securing-an-api