it-swarm.com.de

Wie Entfernen von ASP.Net MVC Standard-HTTP-Headern?

Jede Seite in einer MVC-Anwendung, mit der ich arbeite, setzt diese HTTP-Header in den Antworten:

X-Powered-By: ASP.NET
X-AspNet-Version: 2.0.50727
X-AspNetMvc-Version: 2.0

Wie kann ich verhindern, dass diese angezeigt werden? 

160
Paul Fryer

Das "powered by" ist ein benutzerdefinierter Header in IIS. Das Ändern hängt davon ab, welche Version von IIS Sie verwenden. Informationen zum Ändern oder Entfernen finden Sie hier:

http://www.iis.net/ConfigReference/system.webServer/httpProtocol/customHeaders

So entfernen Sie den MVC-Header 

In Global.asax im Application Start-Ereignis:

MvcHandler.DisableMvcResponseHeader = true;

Fügen Sie dies in die Datei web.config ein, um den Header der X-AspNet-Version zu entfernen:

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

Sie können sie auch entfernen, indem Sie Ihrer global.asax-Datei Code hinzufügen:

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

Ich habe diese Konfiguration in meinem web.config gefunden, der für einen in Visual Studio erstellten New Web Site... war (im Gegensatz zu einem New Project...). Da die Frage eine ASP.NET-MVC-Anwendung angibt, nicht als relevant, aber dennoch eine Option.

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

Update: Troy Hunt hat auch einen Artikel mit dem Titel Shhh… Lassen Sie Ihre Antwortheader nicht zu laut sprechen mit ausführlichen Schritten zum Entfernen dieser Header sowie einem Link zu seinem ASafaWeb - Tool für das Scannen nach ihnen und anderen Sicherheitskonfigurationen.

49
Kevin Hakanson

Wie in Cloaking Ihrer ASP.NET MVC-Webanwendung unter IIS 7 beschrieben, können Sie den X-AspNet-Version-Header deaktivieren, indem Sie den folgenden Konfigurationsabschnitt auf Ihre web.config anwenden:

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

und entfernen Sie den X-AspNetMvc-Version-Header, indem Sie Ihre Global.asax.cs wie folgt ändern:

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

Wie in Benutzerdefinierte Header beschrieben, können Sie den "X-Powered-By" -Header entfernen, indem Sie den folgenden Konfigurationsabschnitt auf Ihre web.config anwenden:

<system.webServer>
   <httpProtocol>
      <customHeaders>
         <clear />
      </customHeaders>
   </httpProtocol>
</system.webServer>

Es gibt keine einfache Möglichkeit, den Antwortheader "Server" über die Konfiguration zu entfernen. Sie können jedoch eine HttpModule zum Entfernen bestimmter HTTP-Header implementieren, wie in Cloaking Ihrer ASP.NET MVC-Webanwendung auf IIS 7 und beschrieben in How-to-Remove-Server-X-Aspnet-Version-X-Aspnetmvc-Version-und-X-powered-by-von-der-Antwort-Header-in-iis7 .

29
RonyK

.NET Core

Um den Server - Header zu entfernen, fügen Sie in der Datei Program.cs die folgende Option hinzu:

.UseKestrel(opt => opt.AddServerHeader = false)

Fügen Sie für dot net core 1 die Option in den Aufruf .UseKestrel () ein. Fügen Sie für Punktnetzkern 2 die Zeile nach UseStartup () hinzu. 

Um X-Powered-By header zu entfernen, wenn Sie in IIS bereitgestellt werden, bearbeiten Sie Ihre web.config und fügen Sie den folgenden Abschnitt in das system.webServer-Tag ein:

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

.NET 4.5.2

Um den Server -Header zu entfernen, fügen Sie in Ihrer global.asax -Datei Folgendes hinzu:

    protected void Application_BeginRequest(object sender, EventArgs e)
    {
        string[] headers = { "Server", "X-AspNet-Version" };

        if (!Response.HeadersWritten)
        {
            Response.AddOnSendingHeaders((c) =>
            {
                if (c != null && c.Response != null && c.Response.Headers != null)
                {
                    foreach (string header in headers)
                    {
                        if (c.Response.Headers[header] != null)
                        {
                            c.Response.Headers.Remove(header);
                        }
                    }
                }
            });
        }

    }

Vor .NET 4.5.2

Fügen Sie Ihrem Projekt die folgende Klasse c # hinzu:

public class RemoveServerHeaderModule : IHttpModule
{
    public void Init(HttpApplication context)
    {
        context.PreSendRequestHeaders += OnPreSendRequestHeaders;
    }

    public void Dispose() { }

    void OnPreSendRequestHeaders(object sender, EventArgs e)
    {
        HttpContext.Current.Response.Headers.Remove("Server");
    }
}

und fügen Sie dann in Ihrer web.config den folgenden Abschnitt <modules> hinzu:

<system.webServer>
    ....
 <modules>
    <add name="RemoveServerHeaderModule" type="MyNamespace.RemoveServerHeaderModule" />
 </modules>

Ich hatte jedoch ein Problem, bei dem Unterprojekte dieses Modul nicht finden konnten. Kein Spaß. 

X-AspNetMvc-Version-Header entfernen

Um das Tag '' X-AspNetMvc-Version '' für jede Version von .NET zu entfernen, ändern Sie die Datei '' web.config '' so, dass sie Folgendes enthält:

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

Danke, Microsoft, dass Sie das unglaublich schwer gemacht haben. Oder vielleicht war das Ihre Absicht, damit Sie IIS und MVC-Installationen auf der ganzen Welt verfolgen könnten ... 

23
Rocklan

In Asp.Net Core können Sie die web.config-Dateien wie folgt bearbeiten:

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

Sie können den Serverheader in den Kestrel-Optionen entfernen:

            .UseKestrel(c =>
            {
                // removes the server header
                c.AddServerHeader = false;
            }) 
7
Darxtar

Wie auf Entfernen von Standard-Server-Headern auf Windows Azure-Websites Seite können Sie Header mit den folgenden Anweisungen entfernen:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.webServer>
    <httpProtocol>
      <customHeaders>
        <clear />
      </customHeaders>
    </httpProtocol>
    <security>
      <requestFiltering removeServerHeader="true"/>
    </security>
  </system.webServer>
  <system.web>
    <httpRuntime enableVersionHeader="false" />
  </system.web>
</configuration>

Dadurch werden der Server-Header und die X-Header entfernt.

Dies funktionierte lokal in meinen Tests in Visual Studio 2015.

7
Eric Dunaway

Der Vollständigkeit halber gibt es eine andere Möglichkeit, den Header Server mithilfe von regedit zu entfernen.

Siehe diesen MSDN-Blog .

Erstellen Sie einen DWORD-Eintrag mit dem Namen DisableServerHeader im folgenden Registrierungsschlüssel, und legen Sie den Wert auf 1 fest.

HKLM\SYSTEM\CurrentControlSet\Services\HTTP\Parameters

Ich würde lieber eine geeignete Lösung mit der Web.config finden, aber <rewrite> ist nicht gut, da dazu das Überschreibungsmodul installiert werden muss und selbst dann den Header nicht wirklich entfernt.

2
Rudey

Der X-Powered-By-Header wird von IIS zur HTTP-Antwort hinzugefügt. Sie können ihn also auch auf Serverebene über den IIS -Manager entfernen:

Sie können die web.config direkt verwenden:

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

Sie können jeden Header oder irgendetwas in Application_EndRequest() ändern

protected void Application_EndRequest()
{
    // removing excessive headers. They don't need to see this.
    Response.Headers.Remove("header_name");
}
1
Emdadul Sawon

Überprüfen Sie dieses Blog Verwenden Sie keinen Code zum Entfernen von Headern. Es ist instabil gemäß Microsoft

Meine Meinung dazu:

<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>
0
mitaka