Absichern von Browserdefinitionsdateien
Aktualisiert: November 2007
Browserdefinitionsdateien (BROWSER-Dateien) enthalten Informationen zu den Funktionen von Klassen von Browsern (z. B. Internet Explorer) sowie von spezifischen Browsern (z. B. Internet Explorer, Version 6.0). ASP.NET verwendet Informationen in BROWSER-Dateien, um zur Laufzeit zu bestimmten, welcher Browser eine Anforderung gesendet hat, über welche Funktionen dieser Browser verfügt und wie Markup in diesem Browser wiedergegeben wird. Weitere Informationen finden Sie unter Schema der Browserdefinitionsdatei (browsers-Element).
Weitere Informationen zu bewährten Vorgehensweisen beim Schreiben von sicherem Code und bei der Sicherung von Anwendungen finden Sie in dem Buch "Writing Secure Code" von Michael Howard und David LeBlanc. Auch Microsoft Patterns and Practices stellt auf diesem Gebiet eine vorzügliche Informationsquelle dar.
Hinweis: |
---|
Browserdefinitionsdateien wurden in .NET Framework, Version 2.0, neu eingeführt. In früheren Versionen von .NET Framework wurden mithilfe des browserCaps-Elements Browserdefinitionen in Konfigurationsdateien definiert. |
Sicherheit von Browserdefinitionsdateien
Alle Browserfeatures einschließlich der .NET Framework-Klassen und der Browserdefinitionsdateien erfordern teilweise Vertrauenswürdigkeit auf Anwendungsebene sowie volle Vertrauenswürdigkeit auf globaler Ebene. Die Assembly für die globale Browserdefinition wird vor dem Platzieren im globalen Assemblycache mit einem eindeutigen Computerschlüssel signiert und kann nicht verfälscht werden. Die Browserdefinitionsdateien im Verzeichnis %SystemRoot%\Microsoft.NET\Framework\version\CONFIG\Browsers sind durch Zugriffssteuerungslisten (ACLs, Access Control Lists) geschützt und können nur mit Administratorberechtigungen geändert werden.
Verzeichnisse für Browserdefinitionsdateien
Das globale Browserverzeichnis und das Unterverzeichnis App_Browsers auf Anwendungsebene sollten nur Dateien mit der Erweiterung .browser enthalten. Nur BROWSER-Dateien werden vom ASP.NET-Browserfeature kompiliert. Außerdem schützt ASP.NET die Dateien in diesen Verzeichnissen vor dem Zugriff des Webservers sowie vor dem Zugriff durch Code anderer Anwendungen.
ACLs für Browserdefinitionsdateien
In der folgenden Tabelle werden die in der Standardeinstellung für BROWSER-Dateien im Verzeichnis %SystemRoot%\Microsoft.NET\Framework\version\CONFIG\Browsers festgelegten ACLs aufgeführt. Diese ACLs werden auch im Verzeichnis selbst festgelegt, enthalten jedoch für die Gruppe ERSTELLER-BESITZER Berechtigungen zum Ändern. Das Verzeichnis ist schreibgeschützt.
Windows-Konto |
Berechtigungen |
---|---|
VSS-Administratoren |
Vollzugriff |
ASP.NET-Computerkonto (<server>\ASPNET) |
Lesen und Ausführen |
ERSTELLER-BESITZER |
Vollzugriff |
IIS_WPG (<server>\IIS_WPG) |
Lesen und Ausführen |
LOKALER DIENST |
Lesen und Ausführen |
NETZWERKDIENST |
Lesen und Ausführen |
Hauptbenutzer (<server>\Power Users) |
Ändern |
SYSTEM |
Vollzugriff |
Benutzer (<server>\Users) |
Lesen und Ausführen |
In der folgenden Tabelle sind die ACLs aufgeführt, die auf Anwendungsebene für BROWSER-Dateien im Unterverzeichnis App_Browsers festgelegt sein sollten.
Windows-Konto |
Berechtigungen |
---|---|
VSS-Administratoren |
Vollzugriff |
IIS_WPG (<server>\IIS_WPG) |
Lesen und Ausführen |
INTERAKTIV |
Lesezugriff |
Internetgastkonto (<server>\IUSR_<server>) |
Lesezugriff |
NETZWERK |
Lesezugriff |
NETZWERKDIENST |
Lesezugriff |
SYSTEM |
Vollzugriff |
Benutzer (<server>\Users) |
Lesen und Ausführen |
Speziell |
Hinzufügen von Browserdefinitionsdateien
Laden Sie keine Browserdefinitionsdateien herunter oder installieren Sie sie, wenn Sie der Quelle nicht vertrauen. Beispielsweise sollten Sie bei einer neuen Browserdefinitionsdatei prüfen, ob eines der folgenden Attribute Verweise auf unbekannte Namespaces enthält:
Das markupTextWriterType-Attribut des controlAdapters-Elements.
Das value-Attribut des capability-Elements.
Legen Sie das controlType-Attribut und das adapterType-Attribut des adapter-Elements fest.
Informationen zu gültigen Elementen und Attributen finden Sie unter Schema der Browserdefinitionsdatei (browsers-Element).
Ändern von Browserdefinitionsdateien
Wenn Sie dem globalen Verzeichnis neue Browserdefinitionsdateien hinzufügen oder Änderungen an globalen Browserdefinitionsdateien vornehmen, werden diese Änderungen erst dann wirksam, wenn Sie die Auflistung der Browserfeatures mithilfe des Tools Aspnet_regbrowsers.exe im Ordner %SystemRoot%\Microsoft.NET\Framework\version manuell erneut kompilieren oder die programmgesteuerte Neukompilierung mit der BrowserCapabilitiesCodeGenerator-Klasse veranlassen.
Für Änderungen an Browserdefinitionen auf Anwendungsebene ist jedoch keine erneute Kompilierung erforderlich. Änderungen an diesen Definitionen werden dynamisch neu kompiliert und angewendet.
Absichern von Browserdefinitionsdateien in einer Umgebungen mit gemeinsamen Hostservern
In Umgebungen mit gemeinsamen Hostservern können böswillige Benutzer Browserdefinitionsdateien ändern, indem sie die Browserdefinitionsdateien direkt, über die Konfigurations-APIs oder über sonstige Verwaltungs- und Konfigurationstools bearbeiten. Behalten Sie starke ACLs für Browserdefinitionsdateien bei, um dieses Risiko zu verringern. Die Verzeichnisse der Browserdefinitionsdateien enthalten kompilierte Inhalte und sollten aus diesem Grund wie alle anderen Codeverzeichnisse in der Anwendung geschützt werden. Wenn der Host-Administrator einem Benutzer das Hinzufügen von Code zu einer Anwendung nicht gestattet, sollte dieser Benutzer auch keine Browserdefinitionsdateien hinzufügen dürfen.
Aktivieren einer Dateisperre für eine Browserdefinitionsdatei
Browserdefinitionsdateien können nur gesperrt werden, wenn mehrere Versuche unternommen wurden, sie zu speichern oder ein Dateihandle zu öffnen. Böswillige Benutzer könnten versuchen, die Browserdefinitionsdateien im Verzeichnis %SystemRoot%\Microsoft.NET\Framework\version\CONFIG\Browsers zu sperren. Für das Sperren einer Browserdefinitionsdatei ist jedoch volle Vertrauenswürdigkeit erforderlich, die in ASP.NET in der Standardeinstellung deaktiviert ist.
Lesen beliebiger Dateien mithilfe der Konfigurations-API
Die Klassen der Konfigurations-API für Browserdefinitionen können nur Verzeichnisse lesen, die Teil der Anwendungsdomäne sind, und nur Dateien, die nicht über die Dateinamenerweiterung .browser verfügen.
Zwischenspeichern von Browserfunktionen
Informationen zu Browserdefinitionsdateien werden zur Laufzeit in einer Auflistung von bekannten Browsern in einem BrowserCapabilitiesFactory-Objekt zusammengeführt. Wenn eine Anforderung erfolgt, identifiziert ASP.NET anhand des Anforderungsheaders den anfordernden Browser und kompiliert ein HttpCapabilitiesBase-Objekt, das dem Typ des anfordernden Browsers entspricht. Das Objekt wird zwischengespeichert und kann für eine andere Anforderung des gleichen Browsers wiederverwendet werden.
Böswillige Clients könnten versuchen, den Webserver mit Anforderungen zu überschwemmen, die jeweils einen anderen Anforderungsheader verwenden, wodurch ASP.NET für jede Anforderung Browserfunktionsobjekte generiert und zwischenspeichert, was zu einem Denial-of-Service-Angriff führen kann. Konfigurieren Sie das userAgentCacheKeyLength-Attribut des browserCaps-Element (ASP.NET-Einstellungsschema)-Elements in der Datei Machine.config oder Web.config, um dieses Risiko zu verringern. Mit diesem Element wird die Zeichenlänge definiert, die als Identifizierungsschlüssel für zwischengespeicherte Funktionsobjekte im internen Cache verwendet wird. Die Standardeinstellung ist 64. Sie können diesen Wert verringern, um die Wahrscheinlichkeit zu erhöhen, dass ein übereinstimmender Browser im Zwischenspeicher gefunden wird und die Auslastung des Zwischenspeichers zu verringern.
Ausnahmen
So verhindern Sie, dass vertrauliche Informationen für unerwünschte Quellen verfügbar gemacht werden: Konfigurieren Sie die Anwendung so, dass entweder keine ausführlichen Fehlermeldungen angezeigt werden oder nur dann ausführliche Fehlermeldungen angezeigt werden, wenn der Webserver der Client ist. Weitere Informationen finden Sie unter customErrors-Element (ASP.NET-Einstellungsschema).
Ereignisprotokoll
Wenn der Server Windows Server 2003 ausführt, können Sie die Sicherheit der Anwendung verbessern, indem Sie das Ereignisprotokoll absichern. Außerdem verhindert die Festlegung von Parametern im Ereignisprotokoll bzgl. Größe, Beibehaltung und weiterer Features, dass ein indirekter Denial-of-Service-Angriff ausgeführt werden kann. Weitere Informationen zur Konfiguration von Ereignisprotokollen erhalten Sie, indem Sie in Windows-Hilfe und Support nach "Ereignisanzeige" suchen.
Siehe auch
Aufgaben
Gewusst wie: Erkennen von Browsertypen auf ASP.NET-Webseiten
Konzepte
ASP.NET-Webserversteuerelemente und Browserfunktionen
Absichern von Browserdefinitionsdateien
ASP.NET-Konfigurationsszenarios
Übersicht über die Gerätefilterung in ASP.NET
Architektonische Übersicht über das adaptive Steuerelementverhalten
Übersicht über die ASP.NET-Webentwicklung für mobile Geräte
Absichern der ASP.NET-Konfiguration
Referenz
Schema der Browserdefinitionsdatei (browsers-Element)