如何在IIS 8.0/8.5中删除服务器头响应?我的当前服务器报告:Microsoft-IIS/8.0``Microsoft-IIS/8.0对于IIS 7.0,我使用了URLScan 3.1,但这仅支持IIS 7.0,而不支持8.x
Microsoft-IIS/8.0``Microsoft-IIS/8.0
ma8fv8wu1#
还有另一个解决方案,在我看来,这个解决方案是最好的和安全的。您可以使用Microsoft创建的UrlRewrite模块。Url Rewrite模块可重定向您的URL,还可以更改响应标头中的IIS服务器名称。您不必使用redirect属性。您可以只使用更改服务器标头值。步骤如下:1.首先,从以下链接下载UrlRewrite模块:http://www.iis.net/downloads/microsoft/url-rewrite并将其安装到您IIS服务器上之后,在cmd控制台上使用此命令重新启动IIS
iisreset /restart
1.将以下项添加到您的Web配置文件的<system.WebServer>标记下。您可以在Value项中写入任何内容作为服务器名称。
<system.WebServer>
1.最后,我们更改了数据头上的IIS版本名称。通过cmd控制台重新启动IIS。1.奖金:如果你想测试你的网站,看看它是否工作或不...你可以使用“HttpRequester”mozilla firefox插件。对于这个插件:https://addons.mozilla.org/En-us/firefox/addon/httprequester/PS:我测试了它,它在IIS服务器上对我有效。在Visual Studio创建的Temproray IIS服务器上没有。
huus2vyu2#
从IIS 10.0开始,现在可以从web.config中删除Server标头:
web.config
Server
<security> <requestFiltering removeServerHeader ="true" /> </security>
有关如何删除所有不需要的/不必要的标题的详细信息,请参阅here。请注意,这会对“应用程序”隐藏服务器头,其他方法也是如此。例如,如果您到达了某个默认页或由IIS本身或应用程序外部的ASP.NET生成的错误页,这些规则将不适用。因此,理想情况下,它们应该位于IIS的根级别上,并且仍然可能会给IIS本身留下一些错误响应。请注意,有一个bug in IIS 10 that makes it sometimes show the header even with the modified config prior to 2019.1C。它现在应该被修复,但IIS/Windows必须更新。
2019.1C
jobtbby33#
不幸的是,您可以在网上找到的大多数关于删除IIS中的“Server”标头的建议对IIS 8.0和8.5都不起作用。我发现唯一有效的选择,在我看来,也是最好的选择,就是使用IIS本机代码模块。本机代码模块与更常见的托管模块不同,因为它们是使用win32 API而不是ASP.NET编写的。这意味着它们适用于所有请求(包括静态页面和图像),而不仅仅是通过ASP.NET管道传递的请求。使用本机代码模块,可以在请求的最后删除不需要的标头,这意味着您可以删除头文件(包括“Server”头文件),而不管它们设置在何处。下面的文章提供了一个示例本机代码模块的二进制文件和源代码,该模块用于删除IIS 7.0到8.5中的标头。http://www.dionach.com/blog/easily-remove-unwanted-http-headers-in-iis-70-to-85
cigdeys34#
在Global.asax.cs中添加以下代码:
protected void Application_PreSendRequestHeaders() { // Remove the default Server header Response.Headers.Remove("Server"); // Optionally, add your own Server header Response.AddHeader("Server", "My-App/1.0"); }
这已经过测试,可以在IIS 8.5和10.0下工作。
u0sqgete5#
只需在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"); }
62lalag46#
这非常简单。只需创建一个自定义模块:
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中注册。
applicationHost.config
<system.webServer> <modules> <add name="HeaderStripModule" type="MyNamespace.HeaderStripModule" /> </modules> </system.webServer>
9wbgstp77#
从IIS 7.5开始,URLScan已停止使用,因为其功能应该通过“请求过滤”选项(IIS 7.5中添加的功能)提供。但是URLScan的“Remove server header”选项看起来在“request filtering”中没有任何等价项。正如在this answer和this answer to you question上所述,您可以使用URLRewrite清空Server,这在IIS 8/8.5上仍然可用(需要进行一些更新,以便在IIS管理控制台中拥有其UI)。事实证明,如果没有官方支持的话,URLScan仍然可以安装在IIS 8/8.5上。我还没有测试过自己。以下是测试步骤:
ini
C:\Windows\System32\inetsrv\urlscan
也许应该执行一些iisreset或甚至重新启动。
iisreset
zazmityj8#
在IIS管理器中,在服务器级别,转到“功能”视图。单击“HTTP响应标头”。您可以在此处添加/删除标头。您还可以在站点级别管理响应标头。
8条答案
按热度按时间ma8fv8wu1#
还有另一个解决方案,在我看来,这个解决方案是最好的和安全的。
您可以使用Microsoft创建的UrlRewrite模块。Url Rewrite模块可重定向您的URL,还可以更改响应标头中的IIS服务器名称。
您不必使用redirect属性。您可以只使用更改服务器标头值。
步骤如下:
1.首先,从以下链接下载UrlRewrite模块:http://www.iis.net/downloads/microsoft/url-rewrite并将其安装到您IIS服务器上之后,在cmd控制台上使用此命令重新启动IIS
1.将以下项添加到您的Web配置文件的
<system.WebServer>
标记下。您可以在Value项中写入任何内容作为服务器名称。1.最后,我们更改了数据头上的IIS版本名称。通过cmd控制台重新启动IIS。
1.奖金:如果你想测试你的网站,看看它是否工作或不...你可以使用“HttpRequester”mozilla firefox插件。对于这个插件:https://addons.mozilla.org/En-us/firefox/addon/httprequester/
PS:我测试了它,它在IIS服务器上对我有效。在Visual Studio创建的Temproray IIS服务器上没有。
huus2vyu2#
从IIS 10.0开始,现在可以从
web.config
中删除Server
标头:有关如何删除所有不需要的/不必要的标题的详细信息,请参阅here。
请注意,这会对“应用程序”隐藏服务器头,其他方法也是如此。例如,如果您到达了某个默认页或由IIS本身或应用程序外部的ASP.NET生成的错误页,这些规则将不适用。因此,理想情况下,它们应该位于IIS的根级别上,并且仍然可能会给IIS本身留下一些错误响应。
请注意,有一个bug in IIS 10 that makes it sometimes show the header even with the modified config prior to
2019.1C
。它现在应该被修复,但IIS/Windows必须更新。jobtbby33#
不幸的是,您可以在网上找到的大多数关于删除IIS中的“Server”标头的建议对IIS 8.0和8.5都不起作用。我发现唯一有效的选择,在我看来,也是最好的选择,就是使用IIS本机代码模块。
本机代码模块与更常见的托管模块不同,因为它们是使用win32 API而不是ASP.NET编写的。这意味着它们适用于所有请求(包括静态页面和图像),而不仅仅是通过ASP.NET管道传递的请求。使用本机代码模块,可以在请求的最后删除不需要的标头,这意味着您可以删除头文件(包括“Server”头文件),而不管它们设置在何处。
下面的文章提供了一个示例本机代码模块的二进制文件和源代码,该模块用于删除IIS 7.0到8.5中的标头。
http://www.dionach.com/blog/easily-remove-unwanted-http-headers-in-iis-70-to-85
cigdeys34#
在Global.asax.cs中添加以下代码:
这已经过测试,可以在IIS 8.5和10.0下工作。
u0sqgete5#
只需在web.config中的自定义标头段中使用clear标记:
对于动态标头,可以在Global.ascx中使用以下代码:
62lalag46#
这非常简单。只需创建一个自定义模块:
如果您想要机器范围的实作,请在
web.config
或applicationHost.config
中注册。9wbgstp77#
从IIS 7.5开始,URLScan已停止使用,因为其功能应该通过“请求过滤”选项(IIS 7.5中添加的功能)提供。
但是URLScan的“Remove server header”选项看起来在“request filtering”中没有任何等价项。
正如在this answer和this answer to you question上所述,您可以使用URLRewrite清空
Server
,这在IIS 8/8.5上仍然可用(需要进行一些更新,以便在IIS管理控制台中拥有其UI)。事实证明,如果没有官方支持的话,URLScan仍然可以安装在IIS 8/8.5上。
我还没有测试过自己。以下是测试步骤:
ini
文件配置URLScan(默认情况下在C:\Windows\System32\inetsrv\urlscan
中)也许应该执行一些
iisreset
或甚至重新启动。zazmityj8#
在IIS管理器中,在服务器级别,转到“功能”视图。单击“HTTP响应标头”。您可以在此处添加/删除标头。您还可以在站点级别管理响应标头。