You need to enable JavaScript to run this app. Asp.Net Web API 如何拦截404页面显示的URL注入恶意文本
优惠活动
大模型
产品
解决方案
定价
更多

Asp.Net Web API 如何拦截404页面显示的URL注入恶意文本

漏洞根因

该隐患属于反射型文本注入:ASP.NET Web API默认渲染的404错误页面,会将攻击者在URL路径中插入的任意文本未经转义、无过滤地嵌入到错误页面HTML中。攻击者可构造带钓鱼诱导文案的恶意URL,让用户打开链接后,在官方域名下的404页面直接看到钓鱼提示,实现诱导点击、钓鱼攻击。

修复方案

所有修复逻辑的核心是从根源切断“请求URL中的任意文本被输出到错误页面”的链路,无需依赖基于GUID的错误消息机制即可完全消除风险,可根据Web API的运行框架选择对应实现。

.NET Core / .NET 5+ 框架下的Web API修复

  • 生产环境强制关闭默认开发者异常页:在Program.cs配置管道时,仅在开发环境启用UseDeveloperExceptionPage(),生产环境移除该中间件——该中间件会直接将完整请求路径、查询参数无过滤地展示在错误页面,是漏洞的核心触发源。
  • 自定义统一404兜底逻辑,完全替换默认错误响应:在请求管道最前端(所有路由映射逻辑之前)添加全局中间件,对所有未匹配路由返回404状态码的请求,统一返回固定内容的响应,全程不读取、不拼接请求路径中的动态文本。
    示例代码:
    app.Use(async (context, next) =>
    {
        await next();
        // 拦截所有返回404的请求
        if (context.Response.StatusCode == StatusCodes.Status404)
        {
            context.Response.ContentType = "text/html; charset=utf-8";
            // 响应内容完全写死,不包含任何请求动态字段
            await context.Response.WriteAsync("""
            <html>
                <body>
                    <h1>404 资源不存在</h1>
                    <p>请返回首页重新访问目标资源</p>
                </body>
            </html>
            """);
        }
    });
    app.MapControllers(); // 保留原有路由映射逻辑
    
  • 新增路由白名单校验:对所有API接口的路由路径做格式约束,仅允许字母、数字、短横线等合法URL字符出现在路径段中,凡是路径包含HTML特殊字符、不符合路由规范的请求,直接在路由匹配阶段拦截返回400错误,不进入后续错误页渲染流程。

.NET Framework 经典Web API(System.Web.Http)修复

  • 替换系统默认错误页配置:在Web.config中配置自定义错误规则,禁用系统默认的包含请求URL的404页面,所有404请求统一跳转到自定义的错误处理页面。
    配置示例:
    <system.web>
      <customErrors mode="On" defaultRedirect="~/Error/404" redirectMode="ResponseRewrite">
        <error statusCode="404" redirect="~/Error/404" />
      </customErrors>
    </system.web>
    <system.webServer>
      <httpErrors errorMode="Custom" existingResponse="Replace">
        <remove statusCode="404" />
        <error statusCode="404" path="/Error/404" responseMode="ExecuteURL" />
      </httpErrors>
    </system.webServer>
    
  • 实现独立的404错误处理Action:错误页的响应内容完全固定,禁止将当前请求的路径、查询字符串等动态内容拼接到响应HTML中,从根源上避免攻击者注入的文本被渲染到页面上。
  • 新增全局请求校验:通过Web API全局消息处理器,对传入的请求URL做格式校验,凡是路径中包含<、>、引号等HTML特殊字符的请求,直接返回400状态码拒绝处理,不进入后续流程。
效果验证

修复完成后,构造包含任意文本、甚至HTML标签的恶意URL发起请求,检查返回的404页面:确认页面内容完全固定,不存在任何与你构造的请求路径相关的展示内容,即代表漏洞已完全修复。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.05 01:15:03