我有一个使用REST API的webapp。我想与更广阔的世界分享API,但在此之前,我需要添加速率限制以防止来自有缺陷的客户端的滥用/高负载。我想为自己的webapp做一个例外,因此它有更高的限制。
有合理的方法吗?不是在寻找100%的防弹解决方案,但可能会让API更难以利用。
请记住,webapp是公开公开的,因此我不能仅依靠API令牌限制速率,因为有人可能只使用相同的令牌。
答案 0 :(得分:1)
由于webapp无法向用户隐藏任何内容,因此我认为无法确保与您的API通信的应用程序是您的。
你可以做的一切都是通过默默无闻的安全保护,根据定义,它是不安全的。
修改强>
我会有一个解决方案,但仍然不安全,但那是一个想法。
首先要有两个身份验证系统。
然后这有点像你的想法。您为每个HTTP会话生成一个令牌。不同之处在于网络应用(调用身份验证)将具有下限。 (例如,第三方为10k,网络应用为1k)。 您应该减少授权呼叫数量的原因是因为单个HTTP会话(其后1个人)应该比第三方应用程序生成更少的API调用。是你的情况吗?
当然,第三方应用程序可以轻松地将自己验证为Web应用程序,但是它必须更快地更新其会话,因此您可以监视每个IP的会话数。 请注意,大学和公司往往落后于单一的IP。
答案 1 :(得分:0)
取决于。您想限制每个人或同一个用户吗?在第一种情况下,只记录上次呼叫发生的时间,并避免在最后10秒内(或根据您的意愿)呼叫。在第二种情况下,您还必须检查用户,同时跟踪会话或令牌。