51 votes

Comment supprimer les en-têtes de réponse IIS/ASP.NET ?

J'ai quelques serveurs IIS/6.0 pour lesquels la sécurité me demande de supprimer quelques en-têtes de réponse qui sont envoyés aux navigateurs des clients lors des requêtes. Ils s'inquiètent de la divulgation d'informations relatives à la plate-forme par le biais des en-têtes de réponse. J'ai supprimé tous les HTTP-HEADERS de la configuration IIS pour le site web (X-Powered-By ou un autre en-tête de ce type).

(Personnellement, je sais que ces informations peuvent être facilement trouvées, même si elles sont cachées, mais ce n'est pas à moi d'en décider).

En-têtes que je souhaite supprimer :

  • Serveur - Microsoft-IIS/6.0
  • X-AspNet-Version - 2.0.50727

Je sais aussi que ASP.NET MVC émet aussi son propre en-tête, si vous savez comment l'enlever aussi, ce serait utile.

  • X-AspNetMvc-Version - 1.0

2voto

mitaka Points 121

Vérifier ce blog . N'utilisez pas de code pour supprimer les en-têtes de réponse. Il est instable selon Microsoft

Utilisez plutôt la section Web.config custom Headers :

<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" />

        <!-- Ensure the cache-control is public, some browser won't set expiration without that  -->
        <add name="Cache-Control" value="public" />
    </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>

0voto

Jan H Points 153

J'utilise une combinaison de Web.config y Global.asax.cs pour se débarrasser de tous les en-têtes personnalisés, y compris les en-têtes suivants :

  • Serveur
  • X-AspNet-Version
  • X-AspNetMvc-Version

Web.config :

<system.web> 
  <httpRuntime enableVersionHeader="false"/> 
</system.web>
<system.webServer>
   <httpProtocol>
      <customHeaders>
         <clear />
      </customHeaders>
   </httpProtocol>
</system.webServer> 

Global.asax.cs :

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

Voir aussi https://stackoverflow.com/a/20739875/1678525

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X