Azure WebApp删除错误请求的``服务器''标头

时间:2018-08-21 04:11:12

标签: azure iis http-headers azure-web-app-service

类似的网址: yourDomain.com /%

抛出错误:400错误的请求

a)-这不会进入应用程序请求周期,而是由HTTP.SYS处理,并显示服务器标头,如下所示:Microsoft-HTTPAPI / 2.0

b)-另外,如果您使用burp拦截器更改主机地址,则服务器头将引发404错误,如下所示:Microsoft-IIS / 10.0

我已经检查了以下URL: Removing Server and X-Powered-By HTTP Headers on Azure Web Site Preview

但是以下Azure票证显示AG允许从响应中删除标头: https://feedback.azure.com/forums/217313-networking/suggestions/16487725-remove-server-framework-headers-from-application-g

但是没有显示如何实现它,以便当请求不在您的应用程序请求周期内时可以删除“ Server”标头。

机票也是如此: Remove sensitive Headers from Azure PaaS hosted Websites

请注意,该应用程序托管在Azure WebApp(而非VM)中。

因此,总而言之,我想在Azure WebApp中托管的应用的上述两种情况下隐藏/更改“服务器”标头。

2 个答案:

答案 0 :(得分:0)

无法删除Azure Web App上的Server标头。

作为一种解决方法,我们可以将Web应用程序托管在VM中的IIS上,而不是Azure Web App中。

要实现此目的,我们可以在搜索,下载和安装后使用Microsoft的官方UrlScan工具。 "C:\ Windows\ System32\ inetsrvurlscan"中有一个UrlScan.ini文件,需要使用管理员权限打开。我的方法是转到管理员的cmd,转到目录,运行命令Notepad UrlScan.ini,然后我们可以使用记事本对其进行编辑。其中有一个“删除服务器标头”,设置为1,重新启动IIS,然后它将生效。然后访问该网站,然后按F12键发现服务器丢失。

我们可以在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);
 }

答案 1 :(得分:0)

要在基于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>();
            });