如何保护iPhone的JSON请求?

时间:2011-11-06 01:37:00

标签: iphone ruby-on-rails json api web-applications

我有一个带有JSONP API的网络应用程序,我正在使用我的iPhone应用程序。如何保护这一点,以便其他地方的请求无法访问我的API?

澄清:我的数据并不重要。您甚至无需登录即可查看。我只是不希望我的数据库处理来自其他来源的查询。

4 个答案:

答案 0 :(得分:3)

你已经开始了一个非常复杂的主题。为自己准备一些非常漫长的夜晚,阅读各种猫捉老鼠技术来保护你的应用程序。我认为你最好的办法是在每个请求的标题中加上一个秘密字符串。像这样:

秘密标题:#$ F @ FQAFDSFE#$%#ADSF())*

验证服务器端的标头并使用SSL。有人可以很容易地回复这篇文章,“好吧,这不会阻止这个,这个和这个”,他们将是正确的。问题是,您是一家担心有人会耗尽客户帐户的银行吗?或者你只是担心99.9999%的人口不足以劫持你的垃圾吗?

有些人对此有各种意见,但如果您的用户需要身份验证才能访问网络服务,则只需要通过SSL在标头中发送用户名和密码。他们仍然可以劫持你的服务,但无论如何也无法看到他们不应该做的任何事情。这仅适用于用户级别的设置。如果它完全公开,你必须考虑你的数据是多么不重要。它可能没有您想象的那么重要。

答案 1 :(得分:1)

您可以在iPhone客户端中嵌入私有RSA密钥,并为每个请求发送签名时间戳 服务器将验证针对公钥的时间戳并拒绝未签名的请求。

敌人可以拆卸iPhone客户端并窃取密钥,你无法做到这一点 (除了黑名单军备竞赛)

答案 2 :(得分:1)

您可以将TLS协议与客户端证书一起使用。 http://en.wikipedia.org/wiki/Transport_Layer_Security

此解决方案的唯一问题(今天尚未解决)是客户端证书存储在应用程序二进制文件中,可以进行逆向编译。

答案 3 :(得分:0)

执行此操作的一种传统方法是获取您请求的所有url变量,添加“秘密”字符串,并散列整个内容并将其添加为额外的url变量。在你的API方面,你做同样的事情,如果哈希匹配给你的东西,它可能来自你的应用程序。