Sicherheitsaspekte für ASP.NET Core
ASP.NET Core ermöglicht Entwicklern, Sicherheit zu konfigurieren und zu verwalten. Die folgende Liste enthält Links zu Sicherheitsthemen:
- Authentifizierung
- Autorisierung
- Datenschutz
- HTTPS-Erzwingung
- Sicheres Speichern geheimer App-Schlüssel in der Entwicklung
- XSRF/CSRF-Prävention
- Ressourcenfreigabe zwischen verschiedenen Ursprüngen (Cross-Origin Resource Sharing, CORS)
- Angriffe durch Cross-Site-Scripting (XSS)
Diese Sicherheitsfunktionen ermöglichen Ihnen, robuste und sichere ASP.NET Core-Apps zu erstellen.
Weitere Informationen zur Blazor-Sicherheitsabdeckung, die die Anleitung in diesem Knoten ergänzt oder ersetzt, finden Sie unter Blazor-Authentifizierung und -Autorisierung in ASP.NET Core und in den anderen Artikeln im Knoten Sicherheit und Identity von Blazor.
ASP.NET Core-Sicherheitsfeatures
ASP.NET Core stellt zahlreiche Tools und Bibliotheken zur Verfügung, um ASP.NET Core-Apps zu sichern, z. B. integrierte Identitätsanbieter und Identitätsdienste von Drittanbietern wie Facebook, Twitter und LinkedIn. ASP.NET Core bietet mehrere Ansätze zum Speichern von App-Geheimnissen.
Authentifizierung im Vergleich zu Autorisierung
Authentifizierung ist ein Vorgang, bei dem ein Benutzer Anmeldeinformationen bereitstellt, die dann mit den Angaben verglichen werden, die in einem Betriebssystem, einer Datenbank, einer App oder einer Ressource gespeichert sind. Wenn diese übereinstimmen, authentifizieren sich die Benutzer erfolgreich und können dann während eines Autorisierungsprozesses Aktionen ausführen, für die sie berechtigt sind. Die Autorisierung bezieht sich auf den Prozess, der festlegt, welche Aktionen ein Benutzer ausführen darf.
Eine weitere Möglichkeit, Authentifizierung zu definieren, besteht darin, sie als eine Möglichkeit zu betrachten, einen „Raum“ (z.B. einen Server, eine Datenbank, eine App oder eine Ressource) zu betreten, während die Autorisierung darin besteht, welche Aktionen der Benutzer mit welchen Objekten innerhalb dieses „Raums“ (Server, Datenbank oder App) ausführen kann.
Häufige Sicherheitsrisiken in Software
ASP.NET Core und EF enthalten Features, die Ihnen helfen, Ihre Anwendungen zu schützen und Sicherheitsverletzungen zu verhindern. Die folgende Liste von Links verweist auf die Dokumentation, die Techniken zur Vermeidung der häufigsten Sicherheitsrisiken in Web-Apps beschreibt:
- Angriffe durch Cross-Site-Scripting (XSS)
- Angriffe durch Einschleusung von SQL-Befehlen
- Angriffe durch XSRF/CSRF (Cross-Site Request Forgery, websiteübergreifende Anforderungsfälschung)
- Offene Weiterleitungsangriffe
Es gibt weitere Sicherheitsrisiken, die Sie kennen sollten. Weitere Informationen finden Sie in den Artikeln im Abschnitt Security and Identity (Sicherheit und Identität) im Inhaltsverzeichnis.
Sichere Authentifizierungsflows
Es wird empfohlen, die sicherste Authentifizierungsoption zu verwenden. Bei Azure-Diensten bieten verwaltete Identitäten die sicherste Authentifizierung.
Sie sollten Resource Owner Password Credentials Grant (Gewährung der Kennwortanmeldeinformationen des Ressourcenbesitzers) vermeiden, denn dies:
- Macht das Kennwort der Benutzerin bzw. des Benutzers für den Client verfügbar.
- Stellt ein erhebliches Sicherheitsrisiko dar.
- Sollte nur verwendet werden, wenn andere Authentifizierungsflüsse nicht möglich sind.
Verwaltete Identitäten sind eine sichere Möglichkeit, sich bei Diensten zu authentifizieren, ohne Anmeldeinformationen in Code, Umgebungsvariablen oder Konfigurationsdateien speichern zu müssen. Verwaltete Identitäten sind für Azure-Dienste verfügbar und können mit Azure SQL, Azure Storage und anderen Azure-Diensten verwendet werden:
- Verwaltete Identitäten in Microsoft Entra für Azure SQL
- Verwaltete Identitäten für App Service und Azure Functions
- Sichere Authentifizierungsflows
Wenn die App auf einem Testserver bereitgestellt wird, kann eine Umgebungsvariable verwendet werden, um die Verbindungszeichenfolge auf einen Datenbankserver für Tests festzulegen. Weitere Informationen finden Sie unter Konfiguration. Umgebungsvariablen werden im Allgemeinen in unverschlüsseltem Nur-Text gespeichert. Wenn der Computer oder Prozess kompromittiert ist, können nicht vertrauenswürdige Parteien auf die Umgebungsvariablen zugreifen. Es wird empfohlen, Umgebungsvariablen zum Speichern einer Produktions-Verbindungszeichenfolge zu verwenden, da sie nicht der sicherste Ansatz ist.
Richtlinien für Konfigurationsdaten:
- Speichern Sie nie Kennwörter oder andere vertrauliche Daten im Konfigurationsanbietercode oder in Nur-Text-Konfigurationsdateien. Das Secret Manager-Tool kann zum Speichern von Geheimnissen in der Entwicklungsumgebung verwendet werden.
- Verwenden Sie keine Produktionsgeheimnisse in Entwicklungs- oder Testumgebungen.
- Geben Sie Geheimnisse außerhalb des Projekts an, damit sie nicht versehentlich in ein Quellcoderepository übernommen werden können.
Weitere Informationen finden Sie unter:
- Empfehlungen zu Best Practices für verwaltete Identitäten
- Herstellen einer Verbindung Ihrer Anwendung mit Ressourcen ohne Verarbeitung von Anmeldeinformationen
- Azure-Dienste, die verwaltete Identitäten für den Zugriff auf andere Dienste verwenden können
- Beste aktuelle Praxis für IETF OAuth 2.0-Sicherheit
Informationen zu anderen Cloudanbietern finden Sie unter:
- AWS (Amazon Web Services): AWS Schlüsselverwaltungsdienst (KMS)
- Übersicht über Google Cloud Schlüsselverwaltungsdienst
Zusätzliche Ressourcen
ASP.NET Core