删除/修改公开 IIS 版本的 IIS 10 服务器标头

RaJ*_*RaJ 8 asp.net iis-10

我正在尝试删除公开 IIS 版本但无法删除的服务器标头。我将 IIS Express 10 与 ASP.NET Core 3.0 一起使用,并开发了一个 Web API。我尝试了以下选项,但响应中仍然存在标头并显示版本 IIS 10.0。

  1. 将 HTTP 参数中的注册表项“DisableServerHeader”更改为 1。它只删除了 http.sys 模块的服务器标头,而不是 IIS 版本。

  2. <system.webServer>标签内的 applicationhost.config 文件中使用以下代码

    <rewrite> <outboundRules rewriteBeforeCache="true"> <rule name="Remove Server header"> <match serverVariable="RESPONSE_Server" pattern=".+" /> <action type="Rewrite" value="" /> </rule> </outboundRules> </rewrite>

小智 25

已经有很多好的答案,但我想为像我这样喜欢使用 Windows GUI IIS 管理控制台“Internet 信息服务 (IIS) 管理器”和附带的“配置编辑器”的用户展示一种不同的方法。

您还可以避免由于配置文件格式错误而导致 IIS 崩溃,正如一位评论者所发生的情况。“配置编辑器”将为您应用 IIS 配置文件中的更改。此外,您可以根据需要全局或按站点方式设置这些设置,而无需手动编辑文件或应用 Powershell/cmd 命令。

  1. 打开“Internet 信息服务 (IIS) 管理器”。

  2. 如果您想全局设置,请单击您的主服务器节点:

    选择iis节点

  3. 打开“配置编辑器”

    打开配置编辑器

  4. 要删除x-aspnet-version响应标头,请转到system.web >> httpRuntime >> enableVersionHeader并将其设置为false

    禁用服务器响应标头

  5. 要删除 IISserver响应标头,请转至system.webServer >> security >> requestFiltering >> removeServerHeader并将其设置为true

    删除 IIS 服务器标头

要设置每个站点的值,只需单击要应用更改的站点,然后从那里选择配置编辑器。


M.R*_*R.T 9

我在这个站点上测试了这个技巧,它在IIS 10上运行良好。

https://www.saotn.org/remove-iis-server-version-http-response-header/#removeserverheader-requestfiltering-in-iis-10-0

简单web.config

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <security>
            <requestFiltering removeServerHeader="true" />
        </security>
    </system.webServer>
</configuration>
Run Code Online (Sandbox Code Playgroud)

  • 请注意,这将破坏旧的 IIS,例如 IIS 8.5。您将收到 500.19“无法识别的属性‘removeServerHeader’” (3认同)

小智 8

以管理员身份运行:

%systemroot%\system32\inetsrv\appcmd.exe set config -section:system.webServer/security/requestFiltering /removeServerHeader:"True"  /commit:apphost
Run Code Online (Sandbox Code Playgroud)


Pet*_*orf 5

我记得我已经看到这在 IIS10 中是可能的,事实上我在IIS 10 中的新功能中对此进行了博客讨论。

有一个新removeServerHeader设置,但它在 GUI 中不可用,您必须使用配置编辑器或使用 PowerShell:

Set-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST'  -filter "system.webServer/security/requestFiltering" -name "removeServerHeader" -value "True"
Run Code Online (Sandbox Code Playgroud)

对于整个服务器,如果您只需要一个站点,请使用:

Set-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST/Default Web Site'  -filter "system.webServer/security/requestFiltering" -name "removeServerHeader" -value "True"
Run Code Online (Sandbox Code Playgroud)

这对我来说似乎工作得很好,不需要重新启动或重新启动 IIS。

http.sys在响应请求的极少数情况下,它不会影响服务器标头。