不确定我是否正确,但我们假设我有一个REST API和端点,例如,创建一些资源,让我们说@POST
来创建用户。
如何保护我的应用程序免受那些使用类似10000 API调用进行for循环的用户创建无用资源?
是否可以编写阻止此类行为的过滤器?我希望你明白我的意思。
答案 0 :(得分:0)
您有很多选择:
让我们以伪代码ABUSING_ID = md5(ip+useragent)
您可以在不同的系统级别(客户端,负载均衡器/ Web服务器端(fail2ban),应用程序级别)实施此方案
您覆盖的级别越高越好。
一些初学者可以使用gui-automation来点击你的UI(如果它暴露你的API),所以你需要客户端保护。
更高级的frauders可以使用脚本来压缩你的api,你需要服务器端保护
另一种使用类似phantonjs的东西来模拟浏览器环境(客户端保护)
一些大亨知道足以聘请廉价工人点击您的网站/使用定制工具提出请求
代理服务器/ tor /僵尸网络/浏览器指纹识别预防(基本上,每次请求都会更改用户代理和其他详细信息)等。
如果您的API使用频繁,您可以从统计信息收集开始 - 它将在稍后付款。 在最糟糕的情况下,您需要一个数据科学家和编码人员团队来创建一个有效的,难以打破的防欺诈系统。
整个世界都在战争中: - )
P.S。我没有对授权的API调用(令牌等)说些什么,因为授权的API调用更容易捕获,我们在这里讨论的是无保护的REST查询
P.P.S。还有另一个指标,但您必须将其视为最后的手段:如果您的服务是国际性的,全球级的,但您有太多欺诈行为,比如虚构的Fraudistan,这种欺诈行为会损害您的业务,那么良好的流量就会带来好处利润,您应该阻止整个国家并发出通知,因此来自该国家的优质客户可以通过更严格的协议进行注册。
答案 1 :(得分:-1)
我同意@ strangeqargo的回答。如果您不想自己实现这一点,有几种服务可以分析请求并建议是否阻止它们,我已经有了ShieldSquare
的良好体验