阻止其他人调用您的JSON Web服务

Pab*_*buc 4 html security json web-services

假设我有一些代码可以创建一个带有JSON服务调用的HTML页面.

如何防止他人复制和粘贴源代码,调用服务并获取第一个用户的结果集?

如果我将域作为服务的参数或获取其他内容(如用户名或密码),则也可以将其复制并粘贴并用于其他域.

我没有看到防止这种情况的方法,或者我错了吗?

Fre*_*Ben 5

你是正确的,没有办法绝对防止这种情况,但你可以使它变得更加困难,你可以做到这一点,以便你可以识别滥用API或被自己攻击的用户.

这样做的方法是使用证书(非对称加密).每个客户端都有一个私钥和一个公钥,这些客户端完全是唯一的.公钥是公共知识(通常存储在服务器上或第三方数据库中,如Comodo或Verisign).私钥对客户端是私有的.服务器还有一个私钥/公钥.

每次客户端发出请求时,请求都会使用服务器的公钥进行加密,并使用客户端的私钥进行签名(加密).服务器的密钥确保只有服务器可以解密请求,并且客户端的密钥确保只有客户端可以加密该请求,以便使用客户端的公钥完全可逆.

这意味着恶意用户只能以他/她自己的名义提出请求,因此您将知道谁在搞乱,或者您知道哪个用户被入侵,因此您可以通知他/她并禁用他们的帐户.这还可以防止其他用户嗅探线路并恢复其他用户执行重播攻击的请求.

还有其他方法可以实现此目的,例如使用安全cookie来跟踪用户请求.我将发布一些有关安全cookie实现的有用问题的链接.其中一些是针对其他平台的,但概念是相同的.

这是很多东西.在开始实施之前,你可能想要做更多的阅读.

其他有用的问题:

  1. REST Web服务身份验证令牌实现
  2. 在iPhone应用程序中使用REST API时的安全性
  3. /sf/ask/1077324811/#15390892 Link Broken.

  • 请注意,这需要为每个用户分配一个私钥.这相当于对用户进行身份验证(使用或不使用私钥),这是您真正可以进行身份​​验证的唯一方法.正如Freedom_Ben所说,它无法对应用程序进行身份验证.期.这不是"有可能".是不可能的.你必须考虑到这一点. (2认同)