【发布时间】:2017-08-18 07:41:06
【问题描述】:
我有一个托管在 Azure 应用服务中的 ASP.Net 站点(使用 Web API 2,尽管这无关紧要)。
我想实施 IP 限制以防止来自单个 IP 地址的过多请求(对于大学/企业来说足够高)。我知道应用服务有一些内置的 DDOS 保护,但我也想防止刮擦等。
【问题讨论】:
-
通过使用 Redis 缓存实例,即使跨多个 Web 前端,也很容易实现限制。在 Global.asax.cs 文件中,添加一个 Application_BeginRequest 方法来记录来自 IP 地址的请求的时间戳。我建议使用自动过期从缓存中删除旧条目。如果某个 IP 地址在给定时间段内有超过 X 个条目,则返回 HTTP 429 Too Many Requests 响应。
标签: c# asp.net azure throttling rate-limiting