1

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

<requestFiltering removeServerHeader="true">

<remove name="Server" />

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

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

非常感谢

4

2 回答 2

0

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

   public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
            .ConfigureWebHostDefaults(webBuilder =>
            {
                webBuilder.UseStartup<Startup>();
                webBuilder.UseKestrel(option => option.AddServerHeader = false);
                
            });
于 2021-04-02T14:34:47.847 回答
0

有三种方法可以从响应中删除 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。

于 2021-04-05T06:01:54.060 回答