【问题标题】:Azure WebApp remove 'Server' header for bad requestsAzure WebApp 删除错误请求的“服务器”标头
【发布时间】:2019-01-27 05:09:58
【问题描述】:
【问题讨论】:
标签:
azure
iis
http-headers
azure-web-app-service
【解决方案1】:
要在基于 Windows/IIS 的 Azure Web 应用程序中删除服务器标头或供电标头,您需要添加具有以下内容的 web.config:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
<httpProtocol>
<customHeaders>
<remove name="X-Powered-By" />
</customHeaders>
</httpProtocol>
<security>
<requestFiltering removeServerHeader="true" />
</security>
</system.webServer>
</configuration>
如果您使用的是基于 Linux/Kestrel,则需要将 Program.cs 文件中的 CreateHostBuilder 更改为如下所示:
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder
.UseKestrel(options => options.AddServerHeader = false)
.UseStartup<Startup>();
});
【解决方案2】:
无法删除 Azure Web App 上的 Server 标头。
作为一种解决方法,我们可以将我们的 Web 应用程序托管在 VM 中的 IIS 上,而不是 Azure Web App。
为此,我们可以使用微软官方的UrlScan工具,经过搜索、下载和安装。
"C:\ Windows\ System32\ inetsrvurlscan"中有一个UrlScan.ini文件,需要用管理员权限打开。我的方法是进入管理员的cmd,进入目录,运行命令Notepad UrlScan.ini,然后我们就可以用记事本编辑了。里面有一个Remove Server Header,设置为1,重启IIS即可生效。然后访问网站,按F12发现Server不见了。
我们可以通过UrlScan 3.1获得UrlScan
关于另一个敏感头X-AspNet-Version,如果您使用的是ASP.NET FX MVC,我们可以通过代码将其删除:
protected void Application_Start()
{
//remove version info of ASP.NET(remove 'X-AspNet-Version' header)
MvcHandler.DisableMvcResponseHeader = true;
AreaRegistration.RegisterAllAreas();
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
}