Sichern der ASP.NET-Sitenavigation
Aktualisiert: November 2007
Die ASP.NET-Sitenavigation stellt Funktionen für die Verwaltung eines zentralen Speichers bereit, der Hyperlinks zu allen Seiten einer Website enthält. Die Hyperlinks können dann auf jeder Seite als Liste oder als Navigationsmenü dargestellt werden, indem ein bestimmtes Webserversteuerelement eingebunden wird.
Die ASP.NET-Sitenavigation wird meist zusammen mit Navigationssteuerelementen wie SiteMapPath, SiteMapDataSource, TreeView und Menu oder programmgesteuert mit der SiteMap-Klasse und der SiteMapProvider-Klasse verwendet. Dieses Thema enthält Informationen zur Verbesserung der Sicherheit der Navigationsfeatures.
Die Sicherheit der Anwendung kann zum einen durch die bewährten Vorgehensweisen für Konfiguration und Codegenerierung verbessert werden. Zum anderen ist ebenfalls wichtig, dass Sie den Anwendungsserver auf dem aktuellsten Stand halten und immer die neuesten Sicherheitsupdates für Microsoft Windows und Internetinformationsdienste (IIS) installieren. Das gilt ebenso für Updates für Microsoft SQL Server und andere Mitgliedschaftsdatenquellen. Weitere Informationen finden Sie auf der Windows Update-Website.
Ausführlichere Informationen über bewährte 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. Siehe auch Grundlegende Sicherheitshinweise für Webanwendungen.
In diesem Thema
Sichere Navigationskonfiguration
Sichern von Siteübersichtsdaten
Ausblenden von Navigationsverknüpfungen bei bestimmten Benutzern
Die Siteübersicht-API
Sichern der Implementierungen von benutzerdefinierten Siteübersichtsanbietern
Fehlermeldungen und Ereignisse
Virenscanner
Sichere Navigationskonfiguration
Die Features der ASP.NET-Sitenavigation sind standardmäßig aktiviert. Sie können deaktiviert werden, indem in der Konfigurationsdatei (Web.config) das enabled-Attribut des siteMap-Elements auf false festgelegt wird. Im folgenden Abschnitt wird die Absicherung von Daten in der Datei Web.config erläutert, die für die Navigation erforderlich sind. Informationen zu den Konfigurationseinstellungen für die Navigation und deren Standardwerte finden Sie unter siteMap-Element (ASP.NET-Einstellungsschema).
Sichern von Konfigurationswerten
Wenn Sie den standardmäßigen ASP.NET-Siteübersichtsanbieter verwenden, müssen Sie die in der Datei Web.config enthaltenen Konfigurationseinstellungen für die Navigation nicht sichern. Wenn Sie jedoch einen benutzerdefinierten Siteübersichtsanbieter implementieren, der eine Datenbank verwendet, und wenn Sie die Datenbankverbindungszeichenfolge in einer Konfigurationsdatei speichern, sollten Sie die Empfehlungen im Abschnitt Sichern des Datenzugriffs zur Verschlüsselung der Verbindungszeichenfolge befolgen.
In einer Hostumgebung sollte die Konfigurationsdatei das Überschreiben des siteMap-Element (ASP.NET-Einstellungsschema)-Elements verweigern. Dadurch wird verhindert, dass die Site für die Verwendung einer anderen Siteübersicht oder eines anderen Siteübersichtsanbieters umkonfiguriert wird. Weitere Informationen finden Sie unter Sperren von Konfigurationseinstellungen. Siehe auch ASP.NET-Anwendungssicherheit in Hostumgebungen.
URL-Zuordnung
URLs können in einer Konfigurationsdatei einer benutzerfreundlichen URL zugeordnet werden. Dies erfolgt mithilfe des urlMappings-Element (ASP.NET-Einstellungsschema)-Elements in der Datei Web.config. ASP.NET erlaubt nur anwendungsrelative Syntax, zum Beispiel ~/filename.aspx. Dies bedeutet, dass zugeordnete URLs in ASP.NET nicht auf Seiten verweisen können, die sich außerhalb der Anwendung befinden. Das bietet Schutz gegen sämtliche Versuche von ISP-Clients, in einer Hostumgebung eine Seite anzuzeigen, die sich außerhalb der jeweiligen Anwendung befindet.
Sichern von Siteübersichtsdaten
ASP.NET ist standardmäßig für den Schutz von Dateien mit bestimmten Dateinamenerweiterungen, wie zum Beispiel .sitemap, konfiguriert. Solche Dateien können von Clients nicht heruntergeladen werden. Legen Sie alle benutzerdefinierten Siteübersichtsdateien, die über andere Dateinamenerweiterungen als .sitemap verfügen, im Ordner App_Data ab, und verwenden Sie die entsprechenden Zugriffssteuerungslisten (ACLs - Access Control Lists), um diese Daten zu schützen. So sollten Sie zum Beispiel unter Windows 2000 und Windows XP dem ASP.NET-Prozesskonto nur schreibgeschützten Zugriff gewähren. Unter Windows 2003 sollten Sie dem Netzwerkdienst nur schreibgeschützten Zugriff gewähren. Weitere Informationen hierzu finden Sie unter Erforderliche Zugriffssteuerungslisten für ASP.NET.
Eine Siteübersichtsdatei wird von der ASP.NET-Sitenavigation nur dann geladen, wenn die Datei innerhalb der Verzeichnisstruktur der Anwendung vorhanden ist. Dadurch wird in gehosteten Umgebungen verhindert, dass die Siteübersichtsdaten der Anwendungen durch eine andere Anwendung geladen werden.
Die ASP.NET-Sitenavigation lässt keinen Zugriff auf Dateien zu, die sich außerhalb der Verzeichnisstruktur der Anwendung befinden. Wenn eine Siteübersicht einen Knoten enthält, der auf eine andere Siteübersichtsdatei verweist, sich diese Datei jedoch außerhalb der Anwendung befindet, wird eine Ausnahme ausgelöst. Die Ausnahme enthält den in SiteMapNode angegebenen Pfad und zeigt an, dass sich dieser Pfad außerhalb des Gültigkeitsbereichs der Anwendung befindet. Aus der Ausnahme ist jedoch nicht ersichtlich, ob der Pfad gültig ist. Dadurch wird verhindert, dass ein Angreifer mithilfe der ASP.NET-Sitenavigation gültige Dateipfade auf einem Server ermittelt.
Informationen zum Sichern der Siteübersichtsdaten beim Implementieren eines benutzerdefinierten Siteübersichtsanbieters, der eine Datenbank verwendet, finden Sie unter Sichern des Datenzugriffs.
Laden der Siteübersicht
Der ASP.NET-Siteübersichts-Standardanbieter lädt Siteübersichtsdaten als XML-Dokument und stellt sie bei Anwendungsstart als statische Daten in den Zwischenspeicher. Eine besonders große Siteübersichtsdatei kann zum Ladezeitpunkt Speicher und CPU erheblich belasten. Daher sollten Sie in einer Hostumgebung die Größe der Siteübersichten begrenzen, die Kunden für ihre Sites erstellen dürfen. Dies trägt zum Schutz vor Denial-of-Service-Angriffen bei.
Die ASP.NET-Sitenavigationsfeatures sind auf Dateibenachrichtigungen angewiesen, um die Navigationsdaten aktuell zu halten. Wenn eine Siteübersichtsdatei geändert wird, lädt ASP.NET die Siteübersichtsdaten erneut. Dies kann zu Problemen führen, wenn die Sitenavigationsstruktur aus untergeordneten Siteübersichten besteht und Benutzern Schreibzugriff auf diese Siteübersichten gewährt wurde, denen möglicherweise nicht bewusst ist, dass jede von ihnen vorgenommene Änderung zu erneutem Laden führt. Daher sollten Sie den Zugriff auf alle Siteübersichtsdateien einschränken. Definieren Sie dazu Benutzergruppen, die über die Berechtigung verfügen, Aktualisierungen an bestimmten Speicherorten vorzunehmen, und legen Sie anschließend die Berechtigungen für die Siteübersichtsdateien auf die jeweilige Benutzergruppe fest.
Ausblenden von Navigationsverknüpfungen bei bestimmten Benutzern
Mithilfe der ASP.NET-Sitenavigation können Sie einzelne Siteübersichtsknoten anhand einer Rolle sichern. Wenn Sie einen Teil der Navigationsstruktur der Site vor bestimmten Benutzern verbergen möchten, können Sie in ASP.NET die Einschränkung aus Sicherheitsgründen aktivieren. Nach der Aktivierung dieser Funktion überprüft ASP.NET die URL-Autorisierung. Optional können dabei auch die Dateizugriffsberechtigungen der Datei überprüft werden, die in einem Siteübersichtsknoten aufgeführt wird. ASP.NET zeigt die Verknüpfung zu dieser Datei nur dann an, wenn der Benutzer Zugriff auf die Datei hat. Um die Anzeige einer Verknüpfung mit einer Datei mit beschränktem Zugriff für alle Benutzer zu aktivieren, legen Sie das roles-Attribut des entsprechenden Siteübersichtsknotens auf das Sternchen (*) oder Platzhalterzeichen fest. Dadurch wird der Link bei allen Clients angezeigt. Weitere Informationen finden Sie unter Einschränken der ASP.NET-Siteübersicht aus Sicherheitsgründen.
Einschließen externer URLs in eine Siteübersicht
In einer Siteübersicht können Sie auf URLs verweisen, die sich außerhalb der ASP.NET-Anwendung befinden. Der Zugriff auf eine URL außerhalb der Anwendung kann in ASP.NET jedoch nicht überprüft werden. Wenn Sie beispielsweise einen Siteübersichtsknoten erstellen, der auf https://www.microsoft.com/germany verweist, und die Einschränkung aus Sicherheitsgründen aktivieren, wird die Verknüpfung auf den Clients nicht angezeigt, da ASP.NET die Zugriffsrechte einer externen URL nicht überprüfen kann. Wenn Sie die Einschränkung aus Sicherheitsgründen aktivieren und Siteübersichtsknoten verwenden, die auf externe URLs verweisen, legen Sie das roles-Attribut dieser Knoten auf das Sternchen (*) fest. Dadurch wird die Verknüpfung auf allen Clients angezeigt, obwohl ASP.NET die Autorisierung für den Zugriff auf die externe Verknüpfung nicht überprüfen kann.
Die Sitenavigations-API
Die Sitenavigationsklassen sind für sämtlichen Code, der auf dem Computer ausgeführt wird, öffentlich verfügbar. Die Sitenavigationsklassen werden unter minimaler Vertrauenswürdigkeit ausgeführt. Die minimale Vertrauenswürdigkeit ist für das Laden der Siteübersichtsdaten erforderlich, da ASP.NET beim Öffnen einer Siteübersichtsdatei mithilfe des Standard-Siteübersichtsanbieters XmlSiteMapProvider Datei-E/A-Vorgänge ausführen muss. Optional können Sie einen benutzerdefinierten Siteübersichtsanbieter entwickeln, der nicht über diese Einschränkung verfügt.
Weitere Informationen finden Sie unter ASP.NET-Vertrauensebenen und Richtliniendateien und Implementieren von ASP.NET-Siteübersichtsanbietern.
Sichern der Implementierungen von benutzerdefinierten Siteübersichtsanbietern
Stellen Sie beim Implementieren eines benutzerdefinierten Siteübersichtsanbieters sicher, dass dieser hinsichtlich der empfohlenen Sicherheitsvorgehensweisen überprüft wird. Dies ist insbesondere in einem Hostzenario wichtig, in dem ein benutzerdefinierter Siteübersichtsanbieter, der nicht korrekt implementiert wurde, unbeabsichtigt Informationen weitergeben oder unsichere Standardkonfigurationseinstellungen enthalten kann. Befolgen Sie die empfohlenen Vorgehensweisen, um Angriffe, z. B. SQL-Injection-Angriffe, zu vermeiden. Beispielsweise sollten Parametereingaben stets überprüft werden.
Informationen zum Sichern einer Datenbank finden Sie unter Sichern des Datenzugriffs. Siehe auch ASP.NET-Anwendungssicherheit in Hostumgebungen.
Fehlermeldungen und Ereignisse
In den folgenden Abschnitten wird erläutert, wie Sie potenzielle Sicherheitsrisiken mindern, die durch unerwartete Fehlermeldungen und Ereignisse entstehen können.
Ausnahmemeldungen
Ausnahmen, die von ASP.NET-Sitenavigationsfeatures ausgelöst werden, geben keine vertraulichen Informationen preis. Überprüfen und testen Sie die benutzerdefinierten Klassen der Webanwendung hinsichtlich des Verhaltens bei ungültigen Eingaben und Anforderungen. So stellen Sie sicher, dass im Falle von Ausnahmen keine vertraulichen Informationen verfügbar gemacht werden.
Fehlermeldungen
Um die unerwünschte Weitergabe sensibler Informationen an unbefugte Benutzer zu verhindern, sollten Sie entweder benutzerdefinierte Fehlermeldungen für die Anwendung verwenden oder detaillierte Fehlermeldungen nur anzeigen, wenn der Client mit dem Webserver identisch ist. Weitere Informationen finden Sie unter customErrors-Element (ASP.NET-Einstellungsschema).
Ereignisprotokoll
Wenn auf dem Computer Windows Server 2003 ausgeführt wird, können Sie die Sicherheit der Anwendung erhöhen, indem Sie das Ereignisprotokoll sichern. Darüber hinaus können indirekte Denial-of-Service-Angriffe gegen das Protokoll verhindert werden, indem Sie die Parameter des Ereignisprotokolls, z. B. die Größe und Aufbewahrungszeit, festlegen. Standardmäßig können nur Mitglieder der Sicherheitsgruppe Administratoren Ereignisprotokolle anzeigen. Weitere Informationen zur Konfiguration von Ereignisprotokollen erhalten Sie, indem Sie in Windows-Hilfe und Support nach "Ereignisanzeige" suchen.
Virenscanner
Tools wie Virenscanner sollten so konfiguriert werden, dass sie keine Änderungen an Siteübersichtsdateien vornehmen. Dies führt zu unnötigem erneutem Laden der Navigationsdaten, da die ASP.NET-Sitenavigationsfeatures auf Dateibenachrichtigungen angewiesen sind, um die Navigationsdaten aktuell zu halten.
Siehe auch
Konzepte
Sichern von Standardsteuerelementen
Übersicht über Sicherheitsrisiken bei Webanwendungen
Grundlegende Sicherheitshinweise für Webanwendungen