1

我有一个使用 REST API 的 webapp。我想与更广泛的世界共享 API,但在此之前,我需要添加速率限制以防止错误客户端的滥用/高负载。我想为我自己的 webapp 做一个例外,所以它有更高的限制。

有没有合理的方法来做到这一点?不是在寻找一个 100% 防弹的解决方案,但也许只是让 API 更难被利用的东西。

请记住,webapp 是公开的,所以我不能仅仅依靠 API 令牌的速率限制,因为有人可以使用相同的令牌。

4

2 回答 2

1

要看。你想限制每个人还是同一个用户?在第一种情况下,只需跟踪最后一次通话发生的时间,并避免在最后 10 秒内通话(或如您所愿)。在第二种情况下,您还必须检查用户,同时跟踪会话或令牌。

于 2013-06-12T21:06:11.447 回答
1

由于 webapp 无法对其用户隐藏任何内容,我认为没有办法确保与您的 API 对话的应用程序是您的。

您可以做的一切都是通过默默无闻来确保安全,这在定义上是不安全的。

编辑

我会有一个解决方案,仍然不安全,但这是一个想法。

首先是要有两个认证系统。

  1. 第三方认证(API 令牌)
  2. Web 应用身份验证(API 令牌 + Web 令牌)

然后有点像你的想法。您为每个 HTTP 会话生成一个令牌。不同之处在于网络应用程序(调用身份验证本身)将有一个下限。(例如,第 3 方为 10k,网络应用为 1k)。您应该减少授权调用数量的原因是,单个 HTTP 会话(其后 1 人)应该比第三方应用程序生成更少的 API 调用。是你的情况吗?

当然,第三方应用程序可以轻松地将自己验证为 Web 应用程序,但它必须更快地更新其会话,因此您可以监控每个 IP 的会话数。请注意,大学和公司通常在很大程度上落后于单个 IP。

于 2013-06-12T21:08:25.357 回答