IIS 10.0含'null'字符串请求跳转至根域问题排查求助
排查IIS 10.0与根web.config导致请求含'null'时跳转根域名的问题
核心排查方向:IIS安全模块与web.config配置
1. 检查IIS请求筛选(Request Filtering)模块
- IIS默认的请求筛选会拦截带潜在风险的字符,单引号常被识别为SQL注入风险字符,部分场景会触发重定向或拦截。
- 操作步骤:
- 打开IIS管理器,进入目标站点的请求筛选功能
- 查看规则标签下是否有针对单引号或
'null'字符串的自定义拦截规则 - 检查查询字符串标签,确认是否存在相关限制
- 临时禁用可疑规则,测试问题是否消失
2. 核对根web.config的安全相关配置
重点检查以下节点:
<httpRuntime>:确认requestValidationMode是否为4.6默认的4.5,若改成2.0会改变验证逻辑;同时查看requestPathInvalidCharacters是否包含单引号(默认包含,但跳转而非报错的情况需结合其他配置判断)<system.webServer>下的<security>:<requestFiltering>里的<denyUrlSequences>是否包含'null'或单引号相关规则- 其他安全模块配置(如
<ipSecurity>)是否有触发跳转的逻辑
<rewrite>节点:检查是否存在URL重写规则,当请求包含'null'时自动重定向到根域名(本地环境通常不会配置这类生产级重写规则,所以无异常)
3. 排查IIS URL重写模块
这类无差别跳转大概率和重写规则有关:
- 进入站点的URL重写功能,逐一查看所有规则,重点找匹配单引号或
'null'字符串的规则 - 确认规则的操作是否为
Redirect到根域名 - 临时禁用所有重写规则测试,若问题解决则定位到具体规则
4. 对比本地与服务器环境差异
本地和生产环境的配置差异是关键:
- 本地IIS是否开启了请求筛选?web.config配置是否和服务器完全一致?
- 服务器是否安装了本地没有的IIS模块(如URL重写、Application Request Routing)?
- 服务器的.NET Framework 4.6补丁版本是否和本地一致?后续补丁可能影响请求处理逻辑
5. 用失败请求跟踪精准定位
开启IIS的失败请求跟踪:
- 启用后捕捉跳转发生时的请求日志,查看是哪个模块(如
RequestFilteringModule、RewriteModule)触发了跳转,直接锁定问题根源
补充验证
你提到URL编码%27null%27可解决问题,说明核心是原始字符串中的单引号触发了服务器的拦截/重写逻辑——编码后单引号被转义,不会触发规则,这也进一步佐证问题来自IIS或web.config的安全、重写配置。
内容的提问来源于stack exchange,提问作者Axel1212
相关产品推荐
相关产品推荐

