English 中文(简体)
具有服务器后端的iPhone应用程序-如何确保所有访问仅来自iPhone应用程序?
原标题:iPhone App with a Server Backend - How to ensure all access is from the iPhone app only?

我不太在意盗版等问题,但我想确保后端(基于Rails)不会向自动化服务开放,以免被DOS攻击等。因此,我只想确保所有对后端的访问(这将是一些REST查询,用于获取和存储数据)仅通过有效的iPhone应用程序进行,而不是某个运行在计算机上的脚本。

我想避免使用账户,以便用户体验无缝。

我的第一个意图是将 UDID 和一个密钥一起哈希,并通过 HTTPS 连接将其提供给服务器(同时包括 UDID)。这将允许创建经过身份验证的会话或返回错误。

如果被窃听,攻击者可以获取哈希值并进行重播,从而使此方案容易受到重播攻击。但是,HTTPS连接不应该保护我免受窃听吗?

谢谢! (xiè xiè!)

最佳回答

就像bpapa所说的那样,它可以被欺骗,但是,就像你所说的,你不那么担心的是有人会来,连续发送一千个请求到你的服务器,你的服务器必须处理每一个请求。

您的哈希想法是一个很好的开始。从那里开始,您还可以将当前时间戳附加到预先哈希的值上,并将其一起发送。如果给定的时间戳与服务器当前时间相差超过1天,则禁止访问。无论如何,这可以阻止超过一天后的重放攻击。

另一个选项是使用“nonce”(一次性数字)。任何人都可以向您的服务器请求nonce,但设备必须在将哈希发送到服务器之前将其附加到预哈希数据。生成的nonce必须存储,或者可以简单地是服务器的当前时间戳。然后,设备必须将服务器的时间戳附加到预哈希数据而不是自己的时间戳,这样可以缩短复读攻击发生的时间,而不是整个一天。

问题回答

使用有客户证明的SSL。 您的客户具有私人钥匙,并为其签发证书,而您的网络服务器可以要求该客户在场,以便会议能够进行。

我无法提供Rails的代码细节,但在架构方面,这是最安全的做法,尽管可能过度。 SSL与证书是标准行业解决方案,而且iPhone/客户端端和服务器端都存在库,因此您不必发明任何东西或实现很多内容,只需让它们很好地协作即可。

您还可以考虑使用HMAC,例如HMAC-SHA1,它基本上是其他人在这里谈论的哈希内容的标准化。如果添加nonce,您也可以安全地防止重放攻击。关于如何使用nonce实现HMAC-SHA1的想法,您可以查看OAuth协议(不是整个流程,而是只是如何将nonce和其他参数绑定到经过身份验证的请求中)。

不能确保它,因为它是可以of的。

如果你真的想走这条路(如果你重新做确实是多余的任务,那么你很可能浪费时间),你就可以穿上“i”装置。 或者说它 has,然后通过。 当然,你没有办法在服务器边或任何东西上加以验证,但如果真的恶意想把你 down倒,那是他必须首先处理的路障1。





相关问题
Signed executables under Linux

For security reasons, it is desirable to check the integrity of code before execution, avoiding tampered software by an attacker. So, my question is How to sign executable code and run only trusted ...

MALICIOUS_CODE EI_EXPOSE_REP Medium

I run findbugs against all of my code and only tackle the top stuff. I finally got the top stuff resolved and now am looking at the details. I have a simple entity, say a user: public class User ...

XSS on jsbin.com

Anyone know if jsbin.com implements any protection for XSS or other javascript attacks? I see jsbin links used fairly regularly on sites like this one and I can t find any indication from the site ...

Make md5 strong

Im making a website that will intergrate with game that only support md5 hashing metod (atm). Which ofc is not especially safe anymore. But how could i make it stronger? Should I just generate long ...

Why running a service as Local System is bad on windows?

I am trying to find out the difference between difference service account types. I tumbled upon this question. The answer was because it has powerful access to local resources, and Network Service ...

Brute-force/DoS prevention in PHP [closed]

I am trying to write a script to prevent brute-force login attempts in a website I m building. The logic goes something like this: User sends login information. Check if username and password is ...

热门标签