web-dev-qa-db-fra.com

Supprimer l'en-tête "Server" de l'application ASP.NET Core 2.1

Est-il possible de supprimer l'en-tête de réponse Server dans une application ASP.NET Core 2.1 (exécutée sur Server 2016 avec IIS 10)?

J'ai essayé de mettre ce qui suit dans le web.config:

<system.webServer>
    <httpProtocol>
        <customHeaders>
            <add name="X-Frame-Options" value="sameorigin" />
            <add name="X-XSS-Protection" value="1; mode=block" />
            <add name="X-Content-Type-Options" value="nosniff" />
            <remove name="X-Powered-By" />
            <remove name="Server" />
        </customHeaders>
    </httpProtocol>
</sytem.webServer>

Les quatre premières modifications apportées à la réponse ont bien fonctionné, mais l'en-tête Server n'a pas été supprimé. Je vois toujours "Kestrel"

12
eat-sleep-code

L'en-tête Kestrel Server est ajouté trop tard dans le pipeline de demandes. Il n'est donc pas possible de le supprimer via le web.config ou via un middleware.

Vous pouvez supprimer l'en-tête du serveur en définissant propriété AddServerHeader sur false sur KestrelServerOptions, cela peut être fait dans Program.cs.

public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
    WebHost.CreateDefaultBuilder(args)
        .UseKestrel(options => options.AddServerHeader = false)
        .UseStartup<Startup>();
16
user1336

Cette solution fonctionne sur IIS 10+ version et permet de supprimer x-powered-by et server en-têtes dans la réponse du serveur.

Dans IIS 10, un nouvel attribut a été ajouté: removeServerHeader.

Nous devons créer web.config fichier dans l'application principale asp.net avec le contenu suivant:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.webServer>
    <security>
      <requestFiltering removeServerHeader="true" />
    </security>
    <httpProtocol>
      <customHeaders>
        <remove name="X-Powered-By" />
      </customHeaders>
    </httpProtocol>
  </system.webServer>
</configuration>

Ensuite, publiez l'application et redémarrez le site sur IIS.

13
user3172616

Pour ceux qui essaient de faire la même chose (en supprimant l'en-tête de réponse du serveur ajouté par le serveur Web Kestrel) mais en utilisant à la place ASP.NET core 2.2, ils doivent utiliser la méthode d'extension ConfigureKestrel ( https: // docs. Microsoft.com/en-us/dotnet/api/Microsoft.aspnetcore.hosting.webhostbuilderkestrelextensions.configurekestrel?view=aspnetcore-2.2#Microsoft_AspNetCore_Hosting_WebHostBuilderKestrelExtensions_ConfigureKestrel_Microsoft_AspNetCore_Hosting_IWebHostBuilder_System_Action_Microsoft_AspNetCore_Server_Kestrel_Core_KestrelServerOptions__ ) au lieu de la méthode d'extension UseKestrel.

3
Enrico Massone