删除服务器响应标头IIS 8.0 / 8.5

qeeaahzv  于 2022-11-12  发布在  其他
关注(0)|答案(8)|浏览(184)

如何在IIS 8.0/8.5中删除服务器头响应?
我的当前服务器报告:Microsoft-IIS/8.0``Microsoft-IIS/8.0
对于IIS 7.0,我使用了URLScan 3.1,但这仅支持IIS 7.0,而不支持8.x

ma8fv8wu

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项中写入任何内容作为服务器名称。

1.最后,我们更改了数据头上的IIS版本名称。通过cmd控制台重新启动IIS。
1.奖金:如果你想测试你的网站,看看它是否工作或不...你可以使用“HttpRequester”mozilla firefox插件。对于这个插件:https://addons.mozilla.org/En-us/firefox/addon/httprequester/
PS:我测试了它,它在IIS服务器上对我有效。在Visual Studio创建的Temproray IIS服务器上没有。

huus2vyu

huus2vyu2#

从IIS 10.0开始,现在可以从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必须更新。

jobtbby3

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

cigdeys3

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下工作。

u0sqgete

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");
   }
62lalag4

62lalag46#

这非常简单。只需创建一个自定义模块:

public class HeaderStripModule : IHttpModule
{
    public void Init(HttpApplication application)
    {
        application.PreSendRequestHeaders += (sender, args) => HttpContext.Current.Response.Headers.Remove("Server");
    }

    public void Dispose(){}
}

如果您想要机器范围的实作,请在web.configapplicationHost.config中注册。

<system.webServer>
  <modules>
      <add name="HeaderStripModule" type="MyNamespace.HeaderStripModule" />
  </modules>
</system.webServer>
9wbgstp7

9wbgstp77#

从IIS 7.5开始,URLScan已停止使用,因为其功能应该通过“请求过滤”选项(IIS 7.5中添加的功能)提供。
但是URLScan的“Remove server header”选项看起来在“request filtering”中没有任何等价项。
正如在this answerthis answer to you question上所述,您可以使用URLRewrite清空Server,这在IIS 8/8.5上仍然可用(需要进行一些更新,以便在IIS管理控制台中拥有其UI)。
事实证明,如果没有官方支持的话,URLScan仍然可以安装在IIS 8/8.5上。
我还没有测试过自己。以下是测试步骤:

  • 安装IIS 6元数据库兼容性(如果尚未安装)
  • 安装Isapi筛选器(如果尚未安装)
  • 安装URLScan(从可下载的安装程序,而不是从Web平台安装程序)
  • 通过其ini文件配置URLScan(默认情况下在C:\Windows\System32\inetsrv\urlscan中)

也许应该执行一些iisreset或甚至重新启动。

zazmityj

zazmityj8#

在IIS管理器中,在服务器级别,转到“功能”视图。单击“HTTP响应标头”。您可以在此处添加/删除标头。您还可以在站点级别管理响应标头。

相关问题