如何验证来自网站的请求?

时间:2020-03-11 01:34:38

标签: ajax http api-design

我和一个朋友正在使用Web前端构建API。 Web通过Ajax请求利用API与后端进行交互。对于不使用网站的用户,我们希望提供有限的API访问权限(您必须付费使用API​​),但是可以完全无限制地访问网站上的任何人。

现在是问题:我们正在努力确定哪个API调用来自何处。由于网站使用JavaScript进行通话,因此请求似乎来自用户的IP。我们考虑过为每个调用使用唯一的令牌或对调用进行签名,但是JavaScript会公开两种情况下使用的方法和键。

我们强调安全性,因此我们正在寻找可靠的解决方案。

谢谢!

1 个答案:

答案 0 :(得分:0)

我们最终用PHP编写的登录名中标了中间件。它生成了一个有效期为24小时的附加令牌,并将其存储在缓存中。该网站发出的所有请求均使用此令牌,因此,如果该令牌不存在,则该请求并非来自该网站。

缺点是,从理论上讲,您可以通过从缓存中获取令牌并在其他地方使用它来伪造请求,但这需要每天手动更新令牌。