我有一个简单的web-API可以通过HTTP访问,一些相应的移动应用程序可以读取这些数据。现在,有人反编译了一个应用程序/嗅探了HTTP流量,获得了我的web API的url,并构建了自己的客户端,就像我的客户端一样。
如何保护仅供我自己的客户端访问我的API?即使想到有人反编译我的应用程序。
服务器和客户端代码更改是一种选择!
发布于 2010-06-28 16:45:51
服务器和客户端代码更改是一种选择!
首先,你不能完全阻止它(没有法律行动:)。使用SSL/TLS,这将有助于嗅探的可能性。
如果应用程序是直接从您的服务器下载的(而不是通过应用程序商店/第三方),您可以更安全地保护它。当用户下载应用程序时,请确保用户已通过身份验证,生成密钥,将其包含在应用程序中,并在与该用户的所有进一步通信中使用它。黑客/窃贼可以模仿这一点,但他们需要通过他们的服务器来模拟登录和下载您的应用程序--您可以找到并阻止它。
发布于 2010-06-28 16:40:23
使用TLS (SSL的继承者)。
简而言之,没有人能够嗅探流量,因为它将被加密。基本版本只包括一个服务器证书-创建一个证书(自签名的开始),并让服务器使用。发生了什么(我不会深入讨论握手的细节):
服务器使用其公钥进行响应
大部分操作都是由您将要使用的API处理的,但是知道事情是如何发生的是很好的。
发布于 2010-06-28 17:03:18
如何验证web请求?
如果有任何流量被嗅探的风险,基本的HTTP身份验证显然是不够的,除非它通过HTTPS发送(这将是安全的)。
还有许多其他方法-基于挑战的机制(例如,摘要身份验证)、客户端证书和SSL。
这确实是一个问题,哪种解决方案带来的痛苦最小-除非你设置了证书颁发机构,否则SSL证书是要花钱的(只要你不希望世界接受你的证书,那么它就相当容易做到),编写代码来实现基于共享密钥的挑战/散列。
或者简单地将URL访问(通过.htaccess)限制为一组固定的ip地址(可选择使用IPSEC进行验证)。
https://stackoverflow.com/questions/3130969
复制相似问题