是否有可能使用随机令牌保护json api抓取?

时间:2013-12-15 02:15:17

标签: json web-services api angularjs laravel

我使用Laravel为在线商店建立了一个安静的json api。

我现在希望创建一个AngularJS应用程序来运行前端Web应用程序。我的商店的产品价格需要每秒更新一次,因此Angular需要每秒从服务器获取一次产品json以更新html。

我希望以某种方式保护这些json数据免遭被刮刀/机器人重复攻击我的api窃取我的产品和定价数据。

我的想法:

每个json api响应包含一个随机的一次性使用令牌(我知道要做的事情来阻止冲突)。

此随机令牌通过AngularJS注入html页面中的隐藏字段。 Angularjs在重新请求api之前读取隐藏的令牌,并在下一个get请求的标头中使用它。

json响应仅在标头中提供正确的标记。使用令牌后,它将过期,并且任何重新使用过期令牌的尝试都会导致该IP地址被锁定一段时间或被标记给管理员进行调查。

有没有更好的方法来做到这一点?我的问题是否有任何实际可用的解决方案?考虑到我首先要支付产品定价的费用,我真的不想让一些骗子免费从我这里得到它只是因为我暴露了api!

1 个答案:

答案 0 :(得分:0)

我想说一个更简单的解决方案是在您的api中添加签名并在Angular应用程序中存储密钥。这是一个非常好的资源,在过去帮助过我:

http://docs.aws.amazon.com/AmazonS3/latest/dev/RESTAuthentication.html

此处还有一个(可能)相关的答案:REST api authenication with laravel