Как удалить избыточную информацию заголовка ответа из Azure Web-Apps?

У меня есть проект MVC, который я развертываю в Azure Web-Apps. Я пытаюсь удалить излишнюю информацию заголовка. Причина, по которой я пытаюсь удалить эту информацию, заключается в том, что это стандартная практика безопасности. (Ссылка)

Я пытаюсь удалить приведенную ниже информацию из заголовков ответов:

Server: Microsoft-IIS/8.0
X-AspNet-Version: 4.0.30319
X-POWERED-BY: PHP/5.4.38
X-POWERED-BY: ASP.NET

У меня есть следующий код в файле Global.asax.cs:

protected void Application_PreSendRequestHeaders()
{
    Response.Headers.Remove("Server");
    Response.Headers.Remove("X-AspNet-Version");
    Response.Headers.Remove("X-AspNetMvc-Version");
}

Но это не влияет на результат.

Ответ 1

Попробуйте это вместо:

 protected void Application_PreSendRequestHeaders(object sender, EventArgs e)
 {
     HttpContext.Current.Response.Headers.Remove("Server");
     HttpContext.Current.Response.Headers.Remove("X-AspNet-Version");
     HttpContext.Current.Response.Headers.Remove("X-AspNetMvc-Version");
 }

Кроме того, в Application_Start вызовите его со следующей инструкцией

PreSendRequestHeaders += Application_PreSendRequestHeaders;

Чтобы удалить X-AspNet-версию, в web.config найдите/создайте и добавьте:

<system.web>
    <httpRuntime enableVersionHeader="false" />
    ...
</system.web>

Чтобы удалить X-AspNetMvc-версию, перейдите в Global.asax, найдите/создайте событие Application_Start и добавьте строку следующим образом:

protected void Application_Start() {
    MvcHandler.DisableMvcResponseHeader = true;
}

Чтобы удалить X-Powered-By, в web.config найдите/создайте и добавьте:

<system.webServer>
    <httpProtocol>
      <customHeaders>
        <remove name="X-Powered-By" />
      </customHeaders>
    </httpProtocol>
    ...
</system.webServer>

Вы можете заставить все запросы пройти через управляемый код, добавив это в свой webconfig:

<modules runAllManagedModulesForAllRequests="true">

Даже статические файлы и неиспользуемые ресурсы должны подчиняться вашим правилам заголовка.

Литература:

Ответ 2

Не используйте код для удаления заголовков ответов. Нестабильно по мнению Microsoft

Вместо этого используйте пользовательский раздел заголовков Web.config, как определено здесь:

    <system.webServer>          
        <httpProtocol>
        <!-- Security Hardening of HTTP response headers -->
        <customHeaders>
            <!--Sending the new X-Content-Type-Options response header with the value 'nosniff' will prevent 
                    Internet Explorer from MIME-sniffing a response away from the declared content-type. -->
            <add name="X-Content-Type-Options" value="nosniff" />

            <!-- X-Frame-Options tells the browser whether you want to allow your site to be framed or not. 
                     By preventing a browser from framing your site you can defend against attacks like clickjacking. 
                     Recommended value "x-frame-options: SAMEORIGIN" -->
            <add name="X-Frame-Options" value="SAMEORIGIN" />

            <!-- Setting X-Permitted-Cross-Domain-Policies header to "master-only" will instruct Flash and PDF files that 
                     they should only read the master crossdomain.xml file from the root of the website. 
                     https://www.adobe.com/devnet/articles/crossdomain_policy_file_spec.html -->
            <add name="X-Permitted-Cross-Domain-Policies" value="master-only" />

            <!-- X-XSS-Protection sets the configuration for the cross-site scripting filter built into most browsers. 
                     Recommended value "X-XSS-Protection: 1; mode=block". -->
            <add name="X-Xss-Protection" value="1; mode=block" />

            <!-- Referrer-Policy allows a site to control how much information the browser includes with navigations away from a document and should be set by all sites. 
                     If you have sensitive information in your URLs, you don't want to forward to other domains 
                     https://scotthelme.co.uk/a-new-security-header-referrer-policy/ -->
            <add name="Referrer-Policy" value="no-referrer-when-downgrade" />

            <!-- Remove x-powered-by in the response header, required by OWASP A5:2017 - Do not disclose web server configuration -->
            <remove name="X-Powered-By" />

            <!-- Set the cache-control per your Security settings (will affect performance) -->
            <add name="Cache-Control" value="No-cache" />
        </customHeaders>
    </httpProtocol>

    <!-- Prerequisite for the <rewrite> section
                Install the URL Rewrite Module on the Web Server https://www.iis.net/downloads/microsoft/url-rewrite -->
    <rewrite>
        <!-- Remove Server response headers (OWASP Security Measure) -->
        <outboundRules rewriteBeforeCache="true">
            <rule name="Remove Server header">
                <match serverVariable="RESPONSE_Server" pattern=".+" />

                <!-- Use custom value for the Server info -->
                <action type="Rewrite" value="Your Custom Value Here." />
            </rule>
        </outboundRules>
    </rewrite>
</system.webServer>