我有几个 IIS/6.0 服务器,安全性要求我删除几个在请求时发送到客户端浏览器的响应标头。他们担心通过响应标头泄露平台信息。我已经从网站的 IIS 配置中删除了所有 HTTP-HEADERS(X-Powered-By 或某些此类标头)。
(我个人确实知道这些信息很容易被发现,即使它是隐藏的,但这不是我的决定。)
我要删除的标题:
- 服务器- Microsoft-IIS/6.0
- X-AspNet 版本- 2.0.50727
我也知道 ASP.NET MVC 也会发出自己的标头,如果您也知道如何删除它,那将很有帮助。
- X-AspNetMvc-版本- 1.0
要删除所有披露过多信息的自定义标头 - IIS 7 的方法多种多样(不幸的是):
标题名称: X-Powered-By
添加:
在
<system.webServer>
节中。标头名称:服务器
通过从 PreSendRequestHeaders 事件中调用 Response.Headers.Remove("Server") 来实现一个 httpModule 来去除此标头。另一个资源:Cloaking your ASP.NET MVC Web Application on IIS 7
标题名称:X-AspNet-Version
在 web.config 的 httpRuntime 部分 - 设置:
标头名称:X-AspNetMvc-Version
从 global.asax 中的 Application_Start 事件 - 执行以下代码 (C#):
您的安全部门希望您这样做以使服务器类型更难识别。这可能会减少自动黑客工具的攻击,并使人们更难闯入服务器。
在 IIS 中,打开网站属性,然后转到 HTTP 标头选项卡。大多数 X- 标头都可以在此处找到并删除。这可以针对单个站点或整个服务器完成(修改树中网站对象的属性)。
对于服务器标头,在 IIS6 上,您可以使用 Microsoft 的URLScan工具对其进行远程处理。Port 80 Software 还制作了一款名为ServerMask的产品,它会为您解决这个问题以及更多其他问题。
对于 IIS7(及更高版本),您可以使用URL 重写模块来重写服务器标头或空白它的值。在 web.config 中(在站点或整个服务器上),在安装 URL 重写模块后添加此内容:
如果您愿意,可以将自定义值放入重写操作中。此示例源自本文,其中还包含其他重要信息。
对于 MVC 标头,在 Global.asax 中:
由于 TechNet 博客链接不再有效,已于 2019 年 11 月 12 日编辑以更新 IIS7 信息。
将它放在 ASP.NET 应用程序的 web.config 文件中将去掉 X-AspNet-Version 标头:
请注意,文件中应该已经存在 system.web 标记。不要创建重复项,只需添加 httpRuntime 标记即可。httpRuntime 标记也可能已经存在。如果是这样,只需添加属性或设置它的值(如果它已经存在)。
刚刚经历了我当前项目的“强化”周期 -我在博客上介绍了我们采用的方法,其中包括一个用于删除以下标头的 HTTPModule:
服务器,
X-AspNet-Version,
X-AspNetMvc-Version,
X-Powered-By
相关部分转载如下:
但是没有简单的方法可以通过配置删除服务器响应标头。幸运的是 IIS7 有一个托管的可插拔模块基础结构,它允许您轻松扩展其功能。以下是用于删除指定 HTTP 响应标头列表的 HttpModule 的源代码:
确保您签署了程序集,然后您可以将其安装到您的 Web 服务器的 GAC 中,并且只需对您的应用程序的 web.config 进行以下修改(或者如果您希望它被全局应用,则对 machine.config 进行修改):
我使用以下代码并为我工作 iis 7.5
检查这个博客。不要使用代码来删除响应标头。根据微软不稳定
请改用 Web.config 自定义标头部分:
我使用
Web.config
和的组合Global.asax.cs
来摆脱所有自定义标题,包括以下标题:网络配置:
全球.asax.cs:
另请参阅https://stackoverflow.com/a/20739875/1678525