如何在IIS 8.0 / 8.5中删除服务器标头响应?
我当前的服务器报告:
Microsoft-IIS/8.0
Microsoft-IIS/8.5
对于IIS 7.0,我使用了URLScan 3.1但是只支持IIS 7.0而不支持8.x
答案 0 :(得分:17)
还有另一种解决方案,在我看来,这种解决方案是最好和最安全的。
您可以使用Microsoft创建的 UrlRewrite模块。 Url Rewrite模块会重定向您的网址,还可以在响应标头中更改您的IIS服务器名称。
您不必使用重定向属性。您只需更改Server标头值即可。
以下是步骤:
首先,从此链接下载UrlRewrite模块: http://www.iis.net/downloads/microsoft/url-rewrite并安装 它在您的IIS服务器上。之后,在cmd上通过此命令重新启动IIS 控制台
iisreset /restart
将以下项目添加到<system.WebServer>
标记下的网络配置文件中。您可以将任何值写入服务器名称。
最后,我们更改了数据标题上的IIS版本名称。再次重新启动IIS。通过cmd控制台。
奖励:如果你想测试你的网站是否有效......你可以使用“HttpRequester”mozilla firefox插件。对于此插件:https://addons.mozilla.org/En-us/firefox/addon/httprequester/
PS:我测试了它,它在IIS服务器上为我工作。不是由Visual Studio创建的temproray IIS服务器。
答案 1 :(得分:9)
不幸的是,您可以在线找到大多数建议,以删除&#34;服务器&#34; IIS中的标头不适用于IIS 8.0和8.5。我发现唯一的工作选项,在我看来,也是最好的,是使用IIS Native-Code模块。
Native-Code模块与更常见的Managed模块不同,因为它们是使用win32 API而不是ASP.NET编写的。这意味着它们适用于所有请求(包括静态页面和图像),而不仅仅是通过ASP.NET管道传递的请求。使用Native-Code模块,可以在请求的最后删除不需要的标头,这意味着您可以删除标头(包括&#34; Server&#34;标头),无论它们在何处设置。
以下文章中提供了用于将IIS 7.0中的标头删除的示例Native-Code模块的二进制文件和源代码。
http://www.dionach.com/blog/easily-remove-unwanted-http-headers-in-iis-70-to-85
答案 2 :(得分:3)
只需在web.config中的自定义标头段中使用clear标记:
<system.webServer>
<httpProtocol>
<customHeaders>
<clear />
<add name="X-Custom-Name1" value="MyCustomValue1" />
<add name="X-Custom-Name2" value="MyCustomValue2" />
</customHeaders>
</httpProtocol>
</system.webServer>
对于动态标头,您可以在Global.ascx中使用此代码:
protected void Application_PreSendRequestHeaders()
{
Response.Headers.Remove("Server");
Response.AddHeader("Sample1", "Value1");
}
答案 3 :(得分:1)
这很简单。只需创建一个自定义模块:
public class HeaderStripModule : IHttpModule
{
public void Init(HttpApplication application)
{
application.PreSendRequestHeaders += (sender, args) => HttpContext.Current.Response.Headers.Remove("Server");
}
public void Dispose(){}
}
如果您希望机器范围实施,请在web.config
或applicationHost.config
注册。
<system.webServer>
<modules>
<add name="HeaderStripModule" type="MyNamespace.HeaderStripModule" />
</modules>
</system.webServer>
答案 4 :(得分:1)
对于上述问题,请在Global.asax.cs
中添加以下代码protected void Application_PreSendRequestHeaders()
{
Response.Headers.Remove("Server");
Response.AddHeader("Sample1", "Value1");
}
经过这么多浏览后问题得到解决。
答案 5 :(得分:0)
从IIS 7.5开始,已停止使用URLScan,因为它的功能应该通过“请求过滤”选项(IIS 7.5中添加的功能)提供。
但是,URLScan的“删除服务器标头”选项看起来不像“请求过滤”中的任何等效项。
正如this answer和this answer to you question所述,您可以使用URLRewrite清空Server
,这仍然可以在IIS 8 / 8.5上使用(在IIS中使用其UI时需要进行一些更新)管理控制台)。
结果是this blog,如果缺少官方支持不是问题,那么仍然可以在IIS 8 / 8.5上安装URLScan。
我没有测试过自己。以下是步骤:
ini
文件(默认情况下在C:\Windows\System32\inetsrv\urlscan
)也许应该完成一些iisreset
甚至重启。在Isapi过滤器中的IIS中可以看到URLScan
答案 6 :(得分:0)
现在可以从IIS 10.0开始从Server
删除web.config
标头:
<security>
<requestFiltering removeServerHeader ="true" />
</security>
有关如何删除所有不需要的/不必要的标题的更多详细信息,请参见here。
请注意,这与所有其他方法一样,都对“应用程序”隐藏了服务器头。如果您例如到达某些默认页面或由IIS本身或应用程序外部的ASP.NET生成的错误页面,这些规则将不适用。因此,理想情况下,它们应该位于IIS的根级别,并且该底线可能会对IIS本身留下一些错误响应。
IIS 10中有一个bug,即使使用config,它有时也会显示标题。现在应该修复它,但是必须更新IIS / Windows。
答案 7 :(得分:-2)
在IIS管理器中,在服务器级别,转到“功能”视图。单击HTTP响应标头。您可以在那里添加/删除标题。您还可以在站点级别管理响应标头。