移动应用中的安全Web服务

时间:2014-02-19 17:36:45

标签: c# php android asp.net web-services

我正在考虑这个女巫,如何能够更安全地编写网络服务 例如我的网址是http://test.com/getdata.php 如何只使用我在Android或ios等移动应用程序中的应用程序进行访问,或任何想法 Web服务可以是REStful或SOAP或任何想法,这是保护Web服务到我的应用程序使用它的最佳方式。
在Android应用程序中可以非常容易地反编译并获取Web服务地址,因为我想防止这种攻击...
如何为此目的实施安全的方式!

1 个答案:

答案 0 :(得分:2)

保护Web服务仅供特定应用程序使用很难,如果您有持久性攻击者,那么它可能是不可能的,因为他们可以在某个模拟器中运行您的应用程序,或者在可以扫描内存并获取的设备上运行信息。

那么,你保护的价值是什么?您试图保护的价值将决定投入多少精力。

但是,您可以在应用程序的每个版本上放置一个RSA公钥,并且必须对某个标记进行加密,以便只有服务器可以解密它,这将有助于确保只有您的应用程序可以调用Web服务,但是,即使密钥在您的应用程序中被硬编码,如果他们努力尝试,也可以找到它。

另一种方法是使用零知识证明来验证应用程序是否声称是谁,因此您需要将信息硬编码到程序中以便查找并回答问题。这应该可行,但我还没有采用这种方法,但可能比使用加密更安全。

但是,最简单的方法是让用户拥有登录名/密码,如果某人拥有有效的凭据,他们就可以使用您的网络服务,即使他们是通过自己的javascript页面进行操作,如果有人做错了,请标记他们的凭证被禁止。

如果你想阻止反编译,那么你可能想看看这个解释为什么这种方法不可靠:https://stackoverflow.com/a/3122640/67566,这就是为什么我认为尝试保护网络服务是最好的方法。

如果处理得当,零知识证明应该依赖于它的编译方式,所以如果有人对应用程序进行逆向工程并重新编译,那么它们应该得到足够的不同以使验证失败。