从 ASP.NET Core 2.1 应用程序中删除 "Server" header
Remove "Server" header from ASP.NET Core 2.1 application
是否可以在 ASP.NET Core 2.1 应用程序中删除 Server 响应 header(运行 在带有 IIS 10 的 Server 2016 上)?
我尝试将以下内容放入 web.config:
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="X-Frame-Options" value="sameorigin" />
<add name="X-XSS-Protection" value="1; mode=block" />
<add name="X-Content-Type-Options" value="nosniff" />
<remove name="X-Powered-By" />
<remove name="Server" />
</customHeaders>
</httpProtocol>
</system.webServer>
对响应的前四个更改工作正常,但 服务器 header 没有被删除。我仍然看到 "Kestrel"
Kestrel 服务器 header 在请求管道中添加得太晚了。因此无法通过 web.config 或中间件删除它。
您可以通过在 KestrelServerOptions
上将 AddServerHeader property 设置为 false
来移除服务器 header,这可以在 Program.cs 中完成。
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseKestrel(options => options.AddServerHeader = false)
.UseStartup<Startup>();
对于那些试图做同样事情(删除 Kestrel 网络服务器添加的服务器响应 header)但使用 ASP.NET 核心 2.2 的人,他们应该使用扩展方法 ConfigureKestrel (https://docs.microsoft.com/en-us/dotnet/api/microsoft.aspnetcore.hosting.webhostbuilderkestrelextensions.configurekestrel?view=aspnetcore-2.2#Microsoft_AspNetCore_Hosting_WebHostBuilderKestrelExtensions_ConfigureKestrel_Microsoft_AspNetCore_Hosting_IWebHostBuilder_System_Action_Microsoft_AspNetCore_Server_Kestrel_Core_KestrelServerOptions__) 而不是扩展方法 UseKestrel.
此解决方案适用于 IIS 10+ 版本,并允许在服务器响应中删除 x-powered-by
和 server
headers。
在 IIS 10 中添加了一个新属性:removeServerHeader
。
我们需要在 asp.net 核心应用程序中创建 web.config
文件,内容如下:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
<security>
<requestFiltering removeServerHeader="true" />
</security>
<httpProtocol>
<customHeaders>
<remove name="X-Powered-By" />
</customHeaders>
</httpProtocol>
</system.webServer>
</configuration>
然后在 IIS 上发布应用并重启网站。
对于 Dotnet Core 3.1 UseKestrel
是 ConfigureWebHostDefaults
的一部分,而不是早期版本中的 CreateDefaultBuilder
。
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>()
.UseKestrel(options => options.AddServerHeader = false);
});
这些说明仅适用于 IIS 10.0。
打开位于 Orion 网站根目录中的 web.config 文件。
在web.configsystem.webServer节点中配置requestFiltering:
<security>
<requestFiltering removeServerHeader ="true" />
</security>
保存文件并重新启动您的 IIS 应用程序。
在NET6中,变为
var builder = WebApplication.CreateBuilder(args);
builder.WebHost.UseKestrel(option => option.AddServerHeader = false);
@SamAlekseev 的回答非常适合删除 Server
和 X-Powered-By
header。唯一缺少的是也删除了 X-AspNet-Version
。这适用于 Azure App Services
以及 IIS
。
完成web.config
:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<!-- To customize the asp.net core module uncomment and edit the following section.
For more info see https://go.microsoft.com/fwlink/?linkid=838655 -->
<!--
<system.webServer>
<handlers>
<remove name="aspNetCore"/>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified"/>
</handlers>
<aspNetCore processPath="%LAUNCHER_PATH%" arguments="%LAUNCHER_ARGS%" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" />
</system.webServer>
-->
<system.webServer>
<httpProtocol>
<customHeaders>
<remove name="X-Powered-By" />
</customHeaders>
</httpProtocol>
<security>
<requestFiltering removeServerHeader="true" />
</security>
</system.webServer>
<system.web>
<httpRuntime enableVersionHeader="false"/>
</system.web>
</configuration>
来源:
https://azure.microsoft.com/en-us/blog/removing-standard-server-headers-on-windows-azure-web-sites/
是否可以在 ASP.NET Core 2.1 应用程序中删除 Server 响应 header(运行 在带有 IIS 10 的 Server 2016 上)?
我尝试将以下内容放入 web.config:
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="X-Frame-Options" value="sameorigin" />
<add name="X-XSS-Protection" value="1; mode=block" />
<add name="X-Content-Type-Options" value="nosniff" />
<remove name="X-Powered-By" />
<remove name="Server" />
</customHeaders>
</httpProtocol>
</system.webServer>
对响应的前四个更改工作正常,但 服务器 header 没有被删除。我仍然看到 "Kestrel"
Kestrel 服务器 header 在请求管道中添加得太晚了。因此无法通过 web.config 或中间件删除它。
您可以通过在 KestrelServerOptions
上将 AddServerHeader property 设置为 false
来移除服务器 header,这可以在 Program.cs 中完成。
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseKestrel(options => options.AddServerHeader = false)
.UseStartup<Startup>();
对于那些试图做同样事情(删除 Kestrel 网络服务器添加的服务器响应 header)但使用 ASP.NET 核心 2.2 的人,他们应该使用扩展方法 ConfigureKestrel (https://docs.microsoft.com/en-us/dotnet/api/microsoft.aspnetcore.hosting.webhostbuilderkestrelextensions.configurekestrel?view=aspnetcore-2.2#Microsoft_AspNetCore_Hosting_WebHostBuilderKestrelExtensions_ConfigureKestrel_Microsoft_AspNetCore_Hosting_IWebHostBuilder_System_Action_Microsoft_AspNetCore_Server_Kestrel_Core_KestrelServerOptions__) 而不是扩展方法 UseKestrel.
此解决方案适用于 IIS 10+ 版本,并允许在服务器响应中删除 x-powered-by
和 server
headers。
在 IIS 10 中添加了一个新属性:removeServerHeader
。
我们需要在 asp.net 核心应用程序中创建 web.config
文件,内容如下:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
<security>
<requestFiltering removeServerHeader="true" />
</security>
<httpProtocol>
<customHeaders>
<remove name="X-Powered-By" />
</customHeaders>
</httpProtocol>
</system.webServer>
</configuration>
然后在 IIS 上发布应用并重启网站。
对于 Dotnet Core 3.1 UseKestrel
是 ConfigureWebHostDefaults
的一部分,而不是早期版本中的 CreateDefaultBuilder
。
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>()
.UseKestrel(options => options.AddServerHeader = false);
});
这些说明仅适用于 IIS 10.0。
打开位于 Orion 网站根目录中的 web.config 文件。
在web.configsystem.webServer节点中配置requestFiltering:
<security> <requestFiltering removeServerHeader ="true" /> </security>
保存文件并重新启动您的 IIS 应用程序。
在NET6中,变为
var builder = WebApplication.CreateBuilder(args);
builder.WebHost.UseKestrel(option => option.AddServerHeader = false);
@SamAlekseev 的回答非常适合删除 Server
和 X-Powered-By
header。唯一缺少的是也删除了 X-AspNet-Version
。这适用于 Azure App Services
以及 IIS
。
完成web.config
:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<!-- To customize the asp.net core module uncomment and edit the following section.
For more info see https://go.microsoft.com/fwlink/?linkid=838655 -->
<!--
<system.webServer>
<handlers>
<remove name="aspNetCore"/>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified"/>
</handlers>
<aspNetCore processPath="%LAUNCHER_PATH%" arguments="%LAUNCHER_ARGS%" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" />
</system.webServer>
-->
<system.webServer>
<httpProtocol>
<customHeaders>
<remove name="X-Powered-By" />
</customHeaders>
</httpProtocol>
<security>
<requestFiltering removeServerHeader="true" />
</security>
</system.webServer>
<system.web>
<httpRuntime enableVersionHeader="false"/>
</system.web>
</configuration>
来源:
https://azure.microsoft.com/en-us/blog/removing-standard-server-headers-on-windows-azure-web-sites/