如何删除 ASP.Net MVC 默认 HTTP 标头?
我正在使用的 MVC 应用程序中的每个页面都会在响应中设置这些 HTTP 标头:
X-Powered-By: ASP.NET
X-AspNet-Version: 2.0.50727
X-AspNetMvc-Version: 2.0
如何防止显示这些标头?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(12)
我在我的
web.config
中找到了此配置,该配置用于在 Visual Studio 中创建的New Web Site...
(而不是New Project... )。由于问题陈述了 ASP.NET MVC 应用程序,因此不那么相关,但仍然是一个选项。
更新:另外,Troy Hunt 有一篇标题为 嘘……不要让您的响应标头说话太大声,其中包含删除这些标头的详细步骤以及指向他的 ASafaWeb 的链接> 用于扫描它们和其他安全配置的工具。
I found this configuration in my
web.config
which was for aNew Web Site...
created in Visual Studio (as opposed to aNew Project...
). Since the question states a ASP.NET MVC application, not as relevant, but still an option.Update: Also, Troy Hunt has an article titled Shhh… don’t let your response headers talk too loudly with detailed steps on removing these headers as well as a link to his ASafaWeb tool for scanning for them and other security configurations.
要删除 Server 标头,请在 Program.cs 文件中添加以下选项:
对于 dot net core 1,请在 .UseKestrel( ) 称呼。对于 dot net core 2,在 UseStartup() 之后添加这一行。
要删除 X-Powered-By 标头(如果部署到 IIS),请编辑 web.config 并在 system.webServer 标记内添加以下部分:
要删除 Server 标头,请在 global.asax 文件中添加以下内容:
将以下 c# 类添加到您的项目中:
然后在 web.config 中添加以下 :部分:
但是我遇到了一个问题,子项目找不到这个模块。不好玩。
删除 X-AspNetMvc-Version 标头
要删除任何版本的 .NET 的“X-AspNetMvc-Version”标签,请修改您的“web.config”文件以包含:
感谢 Microsoft 使这变得难以置信的困难。或者也许这就是您的意图,以便您可以跟踪世界各地的 IIS 和 MVC 安装...
To remove the Server header, within the Program.cs file, add the following option:
For dot net core 1, put add the option inside the .UseKestrel() call. For dot net core 2, add the line after UseStartup().
To remove X-Powered-By header, if deployed to IIS, edit your web.config and add the following section inside the system.webServer tag:
To remove the Server header, within your global.asax file add the following:
Add the following c# class to your project:
and then within your web.config add the following <modules> section:
However I had a problem where sub-projects couldn't find this module. Not fun.
Removing X-AspNetMvc-Version header
To remove the ''X-AspNetMvc-Version'' tag, for any version of .NET, modify your ''web.config'' file to include:
Thanks Microsoft for making this unbelievably difficult. Or maybe that was your intention so that you could track IIS and MVC installs across the world ...
如 在 IIS 7 上隐藏 ASP.NET MVC Web 应用程序,您可以通过将以下配置部分应用到 web.config 来关闭 X-AspNet-Version 标头:
并通过以下方式删除 X-AspNetMvc-Version 标头 :更改 Global.asax.cs 如下:
如自定义标头中所述,您可以删除“通过将以下配置部分应用到您的 web.config,
没有简单的方法可以通过配置删除“Server”响应标头,但您可以实现一个
HttpModule
来删除特定 HTTP 标头,如 在 IIS 7 和 如何删除-server-x-aspnet-version-x-aspnetmvc- version-and-x-powered-by-from-the-response-header-in-iis7。As described in Cloaking your ASP.NET MVC Web Application on IIS 7, you can turn off the X-AspNet-Version header by applying the following configuration section to your web.config:
and remove the X-AspNetMvc-Version header by altering your Global.asax.cs as follows:
As described in Custom Headers You can remove the "X-Powered-By" header by applying the following configuration section to your web.config:
There is no easy way to remove the "Server" response header via configuration, but you can implement an
HttpModule
to remove specific HTTP Headers as described in Cloaking your ASP.NET MVC Web Application on IIS 7 and in how-to-remove-server-x-aspnet-version-x-aspnetmvc-version-and-x-powered-by-from-the-response-header-in-iis7.如 删除 Windows Azure 网站上的标准服务器标头页面,您可以使用以下内容删除标头:
这将删除服务器标头和 X- 标头。
这在我的 Visual Studio 2015 测试中在本地有效。
其他参考:
As shown on Removing standard server headers on Windows Azure Web Sites page, you can remove headers with the following:
This removes the Server header, and the X- headers.
This worked locally in my tests in Visual Studio 2015.
Additional References:
在 Asp.Net Core 中,您可以像这样编辑 web.config 文件:
您可以在 Kestrel 选项中删除服务器标头:
In Asp.Net Core you can edit the web.config files like so:
You can remove the server header in the Kestrel options:
检查 此博客
不要使用代码来删除标头。根据 Microsoft
我对此的看法:
Check this blog
Don't use code to remove headers. It is unstable according Microsoft
My take on this:
为了完整起见,还有另一种方法可以删除
Server
标头,即使用 regedit。查看此 MSDN 博客。
我宁愿使用 Web.config 找到正确的解决方案,但使用
< rewrite>
不好,因为它需要安装重写模块,即使这样它也不会真正删除标头,只是清空它。For the sake of completeness, there is another way to remove the
Server
header, using regedit.See this MSDN blog.
I'd rather find a proper solution using the Web.config, but using
<rewrite>
is not good because it requires the rewrite module to be installed, and even then it won't really remove the header, just empty it.您可以更改
Application_EndRequest()
中的任何标头或任何内容,试试这个You can change any header or anything in
Application_EndRequest()
try thisX-Powered-By 标头由 IIS 添加到 HTTP 响应中,因此您甚至可以通过 IIS 管理器在服务器级别删除它:
您可以直接使用 web.config:
The X-Powered-By header is added by IIS to the HTTP response, so you can remove it even on server level via IIS Manager:
You can use the web.config directly:
这些说明仅适用于 IIS 10.0。
打开位于 Orion 网站根目录中的 web.config 文件。
在 web.config system.webServer 节点中配置 requestFiltering:
<前><代码>
/>
<安全>
保存文件并重新启动 IIS 应用程序。
完整代码,删除以下内容:
These directions apply to IIS 10.0 only.
Open the web.config file located in the root directory for the Orion website.
Configure requestFiltering in the web.config system.webServer node:
Save the file and restart your IIS app.
Full code with Powered By removing:
X-Powered-By
是 IIS 中的自定义标头。从 IIS 7 开始,您可以通过将以下内容添加到web.config
中来删除它:此标头也可以根据您的需要进行修改,有关详细信息,请参阅 http://www.iis.net/ConfigReference/system.webServer/httpProtocol/customHeaders
将其添加到
web.config
删除X-AspNet-Version
标头:最后,要删除
X-AspNetMvc-Version
,请编辑Global.asax .cs
并在Application_Start
事件中添加以下内容:您还可以通过
Global.asax.cs< 中的
Application_PreSendRequestHeaders
事件在运行时修改标头/代码>。如果您的标头值是动态的,这非常有用:X-Powered-By
is a custom header in IIS. Since IIS 7, you can remove it by adding the following to yourweb.config
:This header can also be modified to your needs, for more information refer to http://www.iis.net/ConfigReference/system.webServer/httpProtocol/customHeaders
Add this to
web.config
to get rid of theX-AspNet-Version
header:Finally, to remove
X-AspNetMvc-Version
, editGlobal.asax.cs
and add the following in theApplication_Start
event:You can also modify headers at runtime via the
Application_PreSendRequestHeaders
event inGlobal.asax.cs
. This is useful if your header values are dynamic:您还可以通过将代码添加到 global.asax 文件中来删除它们:
You can also remove them by adding code to your global.asax file: