【问题标题】:How to remove Server header?如何删除服务器标头?
【发布时间】:2021-06-29 05:56:27
【问题描述】:

在我的 ASP.Net Core 3.1 应用程序中,我想从响应标头中删除服务器标头,我在 Web 配置中尝试了以下内容

<requestFiltering removeServerHeader="true">

<remove name="Server" />

任何一个选项都不起作用。通常,当我在浏览器中看到响应标头时,看不到服务器标头,但是当我在那里使用 Nmap 时,我可以看到这个“_http-server-header: Microsoft-IIS/10.0”

我没有找到需要配置的确切位置。

非常感谢

【问题讨论】:

标签: asp.net-core iis-10


【解决方案1】:

您可以尝试修改 Program.CS 中的 UseKestrel 设置:

   public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
            .ConfigureWebHostDefaults(webBuilder =>
            {
                webBuilder.UseStartup<Startup>();
                webBuilder.UseKestrel(option => option.AddServerHeader = false);
                
            });

【讨论】:

  • 致那些将答案降级的人——如果你能提供一个理由就好了!
  • 这绝对可以胜任。也许它被否决了,因为它似乎适用于 .NET core 5...
【解决方案2】:

有三种方法可以从响应中删除 Server 标头。

1.使用 URLRewrite

  • 打开您要删除服务器标头的站点,然后 点击 URLRewrite 部分。

  • 单击右侧“操作”窗格中的“查看服务器变量” 手边。

  • 单击“添加”按钮,然后在“RESPONSE_SERVER”中输入 提供文本框。

  • 现在我们需要创建一个出站规则如下:

    <outboundRules>
     <rule name="Remove server">
         <match serverVariable="RESPONSE_SERVER" pattern=".*" />
            <action type="Rewrite" />
     </rule>
    </outboundRules>
    

2.使用注册表项。

在以下注册表项中创建一个名为 DisableServerHeader 的 DWORD 条目并将值设置为 1。

HKLM\SYSTEM\CurrentControlSet\Services\HTTP\Parameters

添加注册表项后,使用 net stop http 命令和 net start http 命令重新启动 HTTP 服务。如果 HTTP 服务没有启动,则使用 iisreset 命令。如果这也不起作用,那么您可以重新启动服务器。

3.使用 URLScan 工具。

打开通常位于 %WINDIR%\System32\Inetsrv\URLscan 文件夹中的 URLScan.ini 文件。打开后,搜索键 RemoveServerHeader 。默认设置为 0,但要删除 Server 标头,请将值更改为 1。

【讨论】:

  • 我尝试了第一个选项,它会影响浏览器的响应标头,但是当我通过 nmap 扫描站点时,我仍然看到 MS httpd IIS 10.0 服务器版本。第二个和第三个选项我无法尝试,因为该站点作为应用服务托管在 Azure 上
  • 这个只能被客户端用来“隐藏”ServerHeader,不能真正的删除。
  • 是的,你知道其他方法吗?
  • 据我所知,只有三种方法。
猜你喜欢
  • 2016-05-23
  • 2010-11-13
  • 1970-01-01
  • 1970-01-01
  • 2016-11-11
  • 2017-07-11
  • 2012-06-21
  • 2021-06-22
  • 1970-01-01
相关资源
最近更新 更多