asp.net-mvc - 如何修复 IIS 上的 HTTP 请求走私
问题描述
在我的 ASP.NET MVC 应用程序中,我想解决 HTTP 请求走私漏洞问题。
我认为如果我阻止具有“Transfer-Encoding:chunked”标头的请求就足够了。在 IIS 管理菜单上,我为此添加了新的请求过滤规则。然而,这似乎并没有解决。
我编写了少量 .NET 代码来测试 IIS 在发送分块内容时是否生成 404 错误。当我将传输编码头 1 次添加到我的测试客户端代码中时,我没有收到 404,我收到 200。
httpRequest.Headers.Add("Transfer-Encoding", "chunked");
有趣的是,我将标题添加了 2 次(我的意思是复制它)为
httpRequest.Headers.Add("Transfer-Encoding", "chunked");
httpRequest.Headers.Add("Transfer-Encoding", "chunked");
过滤规则适用,我收到了 404,正如我所料。
我该如何解决?
解决方案
几个月后,微软添加了一个补丁,您可以在其中禁用使用注册表项的请求走私。
- 单击开始,单击运行,
Regedit
在打开框中键入,然后单击确定。- 找到并单击以下注册表子项:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\HTTP\Parameters
- 将
DWORD
类型值设置DisableRequestSmuggling
为以下之一:
- 设置为 0 以禁用过滤器
- 设置为 1 以启用过滤器
- 退出注册表编辑器。
- 重新启动计算机。
推荐阅读
- php - HTTP 错误 400 错误请求电报机器人 api
- spring - Kotlin Spring Boot 教程中的 web 依赖是什么?
- python - 如何在 MacOS 上删除 distutils 安装的项目
- apache-kafka-streams - KSQL 是在后台发出远程请求,还是 Table 实际上是全局 KTable?
- android - 在 Android 上获取动态壁纸的图像/屏幕截图?
- r - 如何在 R 中被动更改 ShinyDashboard 框的标题?
- arrays - Excel 索引匹配或类似的东西可以匹配 1 行但返回另一行吗?
- javascript - 这个 javascript 闭包有什么问题?
- python - Ghostscript 将 .ps 文件转换为 .png 文件会给出一个空图像(全黑)
- sql - 如何根据另一个表中的值创建重复记录