Speichern vertraulicher Informationen mit ASP.NET

Aktualisiert: November 2007

In einer ASP.NET-Anwendung ist es häufig erforderlich, mit sehr vertraulichen Informationen umzugehen. Es kann z. B. sein, dass Sie sich mit einer Benutzer-ID und einem Kennwort bei einer Datenbank anmelden müssen oder dass Sie Benutzer-IDs und Kennwörter speichern, mit denen Kunden auf Ihre Anwendung zugreifen. Wenn Daten über das Netzwerk weitergegeben werden, können Sie Informationen mit SSL (Secure Sockets Layer) verschlüsseln. Diese Informationen müssen allerdings auch geschützt werden, wenn sie auf dem Server oder dem Client gespeichert werden. In diesem Thema werden einige allgemeine Richtlinien zum Speichern vertraulicher Informationen behandelt.

Hinweis:

Weitere Informationen zum Speichern vertraulicher Daten finden Sie unter Improving Web Application Security: Threats and Countermeasures auf der MSDN-Website.

Vermeiden Sie möglichst das Speichern vertraulicher Informationen

Am besten vermeiden Sie ungewolltes Bekanntwerden vertraulicher Informationen in einer Anwendung, indem Sie die Informationen gar nicht erst speichern. Speichern Sie vertrauliche Informationen an möglichst wenigen Orten. Vermeiden Sie das Speichern vertraulicher Informationen für Ihre Anwendung in einem Cookie oder einem Steuerelement, das im Browser beibehalten wird und das die vertraulichen Informationen für die Clients Ihrer Anmeldung sichtbar machen würde. Vermeiden Sie das Speichern vertraulicher Informationen in der Anwendungslogik. Rufen Sie die vertraulichen Informationen stattdessen von einem sicheren Konfigurationsspeicherort oder vom Client ab.

Verschlüsseln von vertraulichen Informationen

Wenn Sie vertrauliche Informationen speichern, speichern Sie sie nicht in einem von Menschen lesbaren Text oder in einem leicht decodierbaren Format wie Base64-Codierung. Verschlüsseln Sie die vertraulichen Informationen stattdessen, damit ihr Inhalt, sofern er auf die eine oder andere Weise für einen Angreifer zugänglich wird, von diesem nicht so leicht ermittelt werden kann.

Wenn die vertraulichen Informationen nur verifiziert und nicht in ein von Menschen lesbares Format entschlüsselt werden müssen, verschlüsseln Sie die Informationen mithilfe eines unidirektionalen Hashs. Wenn Sie dann die von einer zu validierenden Quelle erhaltenen vertraulichen Informationen vergleichen, hashen Sie den erhaltenen Wert, und vergleichen Sie die Hashs für die Verifizierung. Wenn Sie z. B. zur Benutzerauthentifizierung für Ihre Anwendung ASP.NET-Mitgliedschaft und Formularauthentifizierung verwenden, legen Sie das Kennwortformat auf Hashed fest, damit Kennwörter mithilfe eines unidirektionalen Hashs verschlüsselt werden, wenn sie in der Datenquelle gespeichert oder für die Validierung verglichen werden.

Wenn Sie vertrauliche Informationen wie Verbindungszeichenfolgen, Benutzeranmeldeinformationen oder Verschlüsselungsschlüssel in der Datei Web.config einer Anwendung speichern, verschlüsseln Sie die vertraulichen Abschnitte der Datei Web.config mit einem Anbieter für geschützte Konfiguration. Weitere Informationen zu geschützter Konfiguration finden Sie unter Verschlüsseln von Konfigurationsinformationen mithilfe der geschützten Konfiguration.

Weitere Informationen zum Verwenden von Verschlüsselung zum Schutz vertraulicher Informationen finden Sie unter Das Kryptografiemodell in .NET Framework.

Schützen vertraulicher Informationen mithilfe von Berechtigungen

Verwenden Sie zum Speichern vertraulicher Informationen in Dateien, Datenbanken, der Registrierung oder an anderen Speicherorten NTFS-Zugriffssteuerungslisten und Datenbankberechtigungen, um den Zugriff auf die Informationen auf die erforderlichen Quellen und den erforderlichen Zugriff zu beschränken. Weitere Informationen finden Sie in der Datenbankdokumentation oder unter Erforderliche Zugriffssteuerungslisten für ASP.NET.

Siehe auch

Konzepte

Sicherheit von Webanwendungen zur Laufzeit