【问题标题】:IP Throttling in ASP.Net [closed]ASP.Net 中的 IP 限制 [关闭]
【发布时间】: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


【解决方案1】:

这个功能似乎没有内置到 ASP.Net 或 Azure App Services 中。

两种选择:

  • 使用Azure API Management - 这充当后端前面的代理。它的大部分功能都针对将由其他开发人员使用的 API,但这也可以用于移动后端,只有一个 API 用户(您的应用程序)。 APIM 允许您在请求到达后端之前对其执行过滤和转换,包括基于 IP 地址的限制。
  • 或者,将其构建到应用程序本身中。有各种库可以帮助解决这个问题,包括 this one

如果您对这两种方法都有强烈的偏好,我很想听听您在 cmets 中的想法。

【讨论】:

    猜你喜欢
    • 2013-03-23
    • 2015-07-31
    • 1970-01-01
    • 2011-11-19
    • 1970-01-01
    • 2012-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多