You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET环境下get-info参数的作用及移除URL Rewrite规则咨询

我来帮你梳理清楚这些问题,都是.NET环境里常见的爬虫/恶意请求场景:

1. ?get-info=xxx这类参数是什么?

这类属于自定义查询参数,不是HTTP标准里的通用参数,大概率是发起请求的工具(恶意爬虫、扫描器)自己生成的标识。随机数字的设计,可能是为了让每个请求看起来“独特”,或者用来测试你的系统对不同参数值的响应差异。

2. 这类请求的可能目的

结合你说的大量请求+触发错误处理,大概率是恶意行为,常见目的有这些:

  • 漏洞探测:爬虫通过修改参数值(随机数字),测试系统是否存在SQL注入、未授权访问、敏感信息泄露等漏洞——比如看不同数字是否返回不同内容,或者错误信息里是否暴露服务器路径、数据库细节。
  • 资源消耗:大量重复请求会占用服务器CPU、带宽资源,拖慢正常用户的访问速度,甚至是轻度的DDoS攻击。
  • 错误逻辑测试:既然这些请求会触发Application_Error,爬虫可能在刻意制造错误,看看你的错误处理机制有没有漏洞(比如是否会泄露敏感配置)。
  • 反爬规避:少数情况下,爬虫用随机参数假装是不同用户的请求,试图绕过基于URL的反爬规则,但这个场景里更偏向恶意扫描。
3. 能否通过URL Rewrite规则移除该参数?

完全可以!而且这是个高效的防护手段,既可以拦截请求,也可以清理无效参数。下面给你两种常用方案:

方案1:用IIS URL Rewrite直接移除参数(并重定向)

如果你的网站部署在IIS上,可以在web.config里添加URL Rewrite规则,直接移除get-info参数,同时返回301重定向告诉爬虫这类参数无效:

<system.webServer>
  <rewrite>
    <rules>
      <rule name="Block get-info Parameter" stopProcessing="true">
        <match url="(.*)" />
        <conditions>
          <!-- 匹配包含get-info参数的请求 -->
          <add input="{QUERY_STRING}" pattern="(^|&)get-info=[^&]*(&|$)" />
        </conditions>
        <!-- 重定向到原路径,不携带无效参数 -->
        <action type="Redirect" url="{R:1}" appendQueryString="false" redirectType="Permanent" />
      </rule>
    </rules>
  </rewrite>
</system.webServer>

方案2:在Global.asax里直接拦截(更高效)

既然你已经在用Global.asax,其实可以在请求一开始就拦截这类请求,不用等到触发Application_Error,这样更节省资源:

protected void Application_BeginRequest(object sender, EventArgs e)
{
    // 检查查询字符串中是否包含get-info参数
    if (!string.IsNullOrEmpty(Request.QueryString["get-info"]))
    {
        // 返回403禁止访问,直接拒绝这类请求
        Response.StatusCode = 403;
        Response.StatusDescription = "Forbidden";
        Response.End();
    }
}

这个方法会在请求进入业务逻辑前就直接阻断,比URL Rewrite更直接,适合快速拦截恶意请求。

内容的提问来源于stack exchange,提问作者MiscellaneousUser

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:28:40