0

我目前正在研究一个 REST/JSON API,它必须通过远程网站提供一些服务。我不知道这些网站的最终客户,他们会/不应该在 API 服务器上拥有帐户。API 服务器上存在的唯一帐户将是识别网站的帐户。由于这都是 RESTful 的,因此所有通信都将在最终用户浏览器(通过 javascript/JSON)和我的 REST API 服务之间进行,我如何确保系统不会被有兴趣增加中间人账单的第 3 方滥用? (中间人是转售我的服务的网站的所有者)。您会推荐哪些身份验证方法可以起作用,并且可以防止用户仅从网站上获取 js 代码并调用 1000000 次以使网站所有者破产?我正在考虑使用 HTTP_REFERER ,并将其转换为 IP 地址(以找出托管代码的服务器,并基于此 IP 进行身份验证),但我认为 HTTP_REFERER 很容易被欺骗。我不是在寻找我客户的最终客户在 API 服务器上注册,这将违背此 API 的目的。

请问有什么想法吗?

谢谢,丹

4

1 回答 1

0

这可能不是您的选择,但我之前在这种情况下所做的是在 REST 调用之上创建代理。该网站调用它自己的内部服务,然后该服务调用您的 REST 调用。优点是,就像您说的那样,没有人可以直接打您的 REST 调用或尝试欺骗调用。

如果做不到这一点,您可以实现像 HMAC (http://en.wikipedia.org/wiki/Hash-based_message_authentication_code )这样的身份验证方案 ) 这样的身份验证方案。我已经看到很多 API 都使用它。

使用 HMAC-SHA1 进行 API 身份验证 - 如何安全地存储客户端密码?

下面是验证 Java 代码的样子: //support.ooyala.com/developers/documentation/api/signature_java.html

无论哪种方式,我认为您都必须在服务器端做一些工作。否则,如果一切都是纯粹的客户端,人们可能能够对 API 进行逆向工程。

于 2013-02-01T19:53:15.970 回答