Entfernen nicht verwendeter HTTP-Handler für bessere Leistung und Sicherheit

8

Wo kann ich eine Liste mit allen standardmäßigen IIS-HTTP-Handlern abrufen? Ich brauche Dokumentation !! Ich habe ein paar Blogs gelesen, die aus Performance- und Sicherheitsgründen empfehlen, Dutzende von nicht verwendeten HTTP-Handlern zu entfernen.

z. Es wird empfohlen, TraceHandler-Integrated und TraceHandler-Integrated-4.0 zu entfernen, da andernfalls das Navigieren zu /trace.axd in einer Produktionsumgebung zu einem 500 Internal Server Error statt zu 404 Not Found führt und in einer Produktionsumgebung keine Ablaufverfolgung erforderlich ist.

Einige der HTTP-Handler, die ein GitHub-Projekt ( Jetzt gelöscht ) empfiehlt, von Ihrer Site zu entfernen:

%Vor%     
Muhammad Rehan Saeed 04.03.2015, 14:28
quelle

3 Antworten

12

Wenn Sie wirklich eine minimale Menge von Handlerzuordnungen wünschen, schlage ich vor, dass Sie clean starten, in Ihrer web.config alle Handler entfernen und einfach die StaticFile-Funktion verwenden:

%Vor%

Fügen Sie nun alle benötigten Handler hinzu, nur für die Bitness und den Modus, in dem Sie gerade laufen.

Für ein einfaches MVC-Projekt kann es ausreichen,

hinzuzufügen %Vor%

Was machen all die Handler?

Ich konnte auch keine Dokumentation finden, also hier ist mein Versuch:

Die Handlerzuordnungen sind in %SystemRoot%\System32\inetsrv\config\applicationHost.config - system.webServer/handlers

definiert

In meinem Fall gab es 87 Abbildungen.

50 von ihnen sind modules="IsapiModule" scriptProcessor="...aspnet_isapi.dll" für ASP.NET. Diese decken alle verschiedenen asp.net-Erweiterungen ab und können für die CLR-Versionen 2.0 und 4.0 sowie für 32-Bit und 64-Bit existieren. Die meisten von ihnen sind für den klassischen Modus.

Sie behandeln normalerweise die folgenden Erweiterungen:

%Vor%

Wenn Ihr Projekt bestimmte Erweiterungen nicht verwendet, können Sie diese Handler entfernen.

Die meisten Handler-Zuordnungen haben preCondition , wie sie in 32-Bit-Anwendungspools oder im klassischen Modus gelten. Wenn Sie nur den 64Big-integrierten Modus ausführen, können Sie alle klassischen Modus- und 32-Bit-Handlerzuordnungen entfernen.

Wenn wir * .cshtml für eine Razor-Ansichtsdatei betrachten, finden Sie drei Zuordnungen, zwei für ClassicMode in 32/64 Bit, die auf die ASP.NET ISAPI-Module verweisen, die dritte jedoch nur im integrierten Modus und in Maps zu HttpForbiddenHandler, weil das MVC-Routing im integrierten Modus anders funktioniert und Sie den Zugriff auf Dateien nicht direkt zulassen möchten.

Es kann IsapiModules für klassisches ASP oder CGI geben, wie das ASP.NET-Mapping dort ist, um die Anforderungen für Dateien mit bestimmten Erweiterungen zu behandeln.

Die zweitgrößte Gruppe sind die type="System. Handler, schauen wir uns diese an:

System.Runtime.Remoting.Channels.Http.HttpRemotingHandlerFactory

Handelt *.rem und *.soap Dateien im integrierten Modus. Kann entfernt werden, wenn Sie keine Remoting-Funktion verwenden.

System.ServiceModel.Activation.HttpHandler, System.ServiceModel.Activation

Behandelt bestimmte WCF-Anfragen mit *.rules,*.xoml,*.svc Erweiterungen.

System.Web.Handlers.AssemblyResourceLoader

Handles WebResource.axd -Anfragen, diese können in WebForms verwendet werden, aber normalerweise nicht in MVC-Projekten.

System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions

Zum Behandeln von ScriptResource.axd , das JavaScript- und CSS-Ressourcen in WebForms bereitstellt.

System.Web.Handlers.TraceHandler

Handler für trace.axd zum Anzeigen von ASP.NET-Ablaufverfolgungsinformationen In einer Produktionsumgebung möchten Sie diesen Handler entfernen.

System.Web.Handlers.TransferRequestHandler

Wird verwendet, um erweiterungsfreie Anfragen im integrierten Modus zu behandeln. Dadurch wird die Anforderung an die Routing-Engine weitergeleitet, um zu entscheiden, wie mit diesen Anforderungen verfahren wird. Weitere Informationen

System.Web.Handlers.WebAdminHandler

Handles WebAdmin.axd , um ASP.NET Website Administration Toolkit anzuzeigen, Sie können dies entfernen, wenn Sie diese integrierte Funktion nicht verwenden.

System.Web.HttpForbiddenHandler

Erlaubt uns den Zugriff auf Dateien mit bestimmten Erweiterungen zu verhindern. Es gibt jedoch einen 500-HTTP-Status zurück und löst tatsächlich eine System.Web.HttpException-Ausnahme auf dem Server aus. Meiner Meinung nach gibt es bessere Möglichkeiten, bestimmte Erweiterungen wie IIS Request Filtering zu bloggen .

System.Web.HttpMethodNotAllowedHandler

Ich denke, das wird nicht mehr in modernen IIS verwendet, es gibt einen 405 HTTP-Status zurück und wirft auch HttpException

System.Web.HttpNotFoundHandler

Auch nicht mehr in meiner aktuellen Konfiguration. Es wird eine HTTP-Ausnahme 404 ausgelöst.

System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions

Handles *.asmx und *_AppService.axd , um Web-Service-Aufrufe über Ajax zu unterstützen.

System.Web.Services.Protocols.WebServiceHandlerFactory, System.Web.Services

Behandelt auch *.asmx Web-Service-Anfragen im integrierten Modus für DOT.NET 2

System.Web.StaticFileHandler

Gibt eine statische Datei zurück, die nicht mehr verwendet wird?

System.Web.UI.PageHandlerFactory

Behandelt ASP.NET-WebForm-Seiten .aspx im integrierten Modus.

System.Web.UI.SimpleHandlerFactory

Behandelt benutzerdefinierte ASP.NET-Handler .ashx im integrierten Modus.

System.Xaml.Hosting.XamlHttpHandlerFactory, System.Xaml.Hosting

Übernimmt die Windows Workflow Foundation-Dienste .xamlx im integrierten Modus.

mehr Handler:

modules="StaticFileModule, DefaultDocumentModule, DirectoryListingModule"

Dies ist normalerweise das allerletzte Mapping, um Anfragen zu bearbeiten, die von keinem der vorherigen Handles behandelt wurden. path="*" verb="*" . Es verwendet tatsächlich drei verschiedene Module. StaticFileMode sucht nach einer physischen Datei, die der angeforderten URL entspricht. Wenn sie nicht gefunden wird, sucht DefaultDocumentModule nach einem Standarddokument im selben Ordner wie die angeforderte URL. Wenn dies auch nicht gefunden wird, zeigt DirectoryListingModule möglicherweise den Inhalt des Verzeichnisses an aktiviert.

modules="ProtocolSupportModule"

Damit werden alle Anforderungen für die HTTP-Verben TRACE und OPTIONS bearbeitet. Wenn Sie diese Zuordnung entfernen, wird bei allen Trace- und Optionsanforderungen eine "405-Methode nicht zulässig"

zurückgegeben     
Peter Hahndorf 15.03.2015 11:20
quelle
1

noch einmal, keine genaue Antwort, aber einige sehr hilfreiche Informationen (imo): Ссылка

    
wazz 13.03.2015 18:39
quelle
0

Beantworten Sie dies

  

Wo kann ich eine Liste aller standardmäßigen IIS-HTTP-Handler finden?

Öffnen Sie IIS, CMD - & gt; inetmgr, klicken Sie dann auf Handlerzuordnungen, siehe unten Screenshot.

Klicken Sie auf diese Schaltfläche, um alle standardmäßig aktivierten HTTP-Handler für diesen Webserver anzuzeigen.

Hinweis: Wenn Sie ein virtuelles Verzeichnis auswählen und dann diesen Prozess ausführen, d. h. auf Handlerzuordnungen klicken und eines der Zuordnungen entfernen, wird diese Zeile in web.config hinzugefügt.

z. Ich habe aspq-ISAPI-4.0_64bit entfernt, so dass web.config für dieses virtuelle Verzeichnis geändert wurde, d. H. Es wurde der web.config die folgende Zeile hinzugefügt.

<remove name="aspq-ISAPI-4.0_64bit" /> unter system.webServer\handlers .

Aktualisieren : Diese Handler werden aufgerufen, wenn eine bestimmte Dateitypanforderung kommt, bis sie inaktiv ist. Es wird also kein Leistungsproblem für diese Handler geben.

Beispiel, dass Sie removing handler for *.axd will improve security haben, meine Antwort darauf, einige DLL brauchen möglicherweise diese Dateien zum Rendern von js und css, und wenn Sie das entfernen, wird es nicht funktionieren. Z.B. - HTTP-Handler kann axd nicht finden Datei im verschachtelten Webanwendungsordner: Telerik RadScriptManager kann WebResource.axd nicht im ~ / admin / Ordner finden

    
Arindam Nayak 12.03.2015 16:00
quelle