6 Strategien zur Sicherung von Webanwendungen in ASP.NET Core

Strategien zur Sicherung von Webanwendungen in ASP.NET Core

Webanwendungen sind heutzutage anfällig für verschiedene Sicherheitsbedrohungen. Daher sollten Sie Strategien implementieren, um Ihre Daten zu schützen und Ihre Anwendung vor Angriffen zu sichern. Die Sicherung Ihrer Anwendung erfordert einen proaktiven Ansatz in Kombination mit der Umsetzung bewährter Praktiken, wie in diesem Artikel diskutiert.

Dieser Artikel untersucht sechs Strategien, die Sie anwenden können, um Ihre Webanwendungen zu sichern, unter Verwendung der Schutzmechanismen, die in ASP.NET Core verfügbar sind. Um die illustrierten Codebeispiele in diesem Artikel zu verwenden, sollten Sie Visual Studio 2022 auf Ihrem System installiert haben. Falls Sie noch keine Kopie besitzen, können Sie es hier herunterladen.

Erstellen eines ASP.NET Core Web App MVC-Projekts in Visual Studio 2022

Um ein ASP.NET Core Web API-Projekt in Visual Studio 2022 zu erstellen, befolgen Sie die unten aufgeführten Schritte.

  1. Starten Sie die Visual Studio 2022-IDE.
  2. Klicken Sie auf „Neues Projekt erstellen“.
  3. In dem Fenster „Neues Projekt erstellen“ wählen Sie „ASP.NET Core Web App (Model-View-Controller)“ aus der Liste der angezeigten Vorlagen.
  4. Klicken Sie auf Weiter.
  5. In dem Fenster „Konfigurieren Sie Ihr neues Projekt“ geben Sie den Namen und den Speicherort für das neue Projekt an. Aktivieren Sie optional das Kontrollkästchen „Lösung und Projekt im selben Verzeichnis platzieren“, je nach Ihren Präferenzen.
  6. Klicken Sie auf Weiter.
  7. In dem nächsten angezeigten Fenster „Zusätzliche Informationen“ wählen Sie „.NET 8.0 (Langzeitunterstützung)“ als Framework-Version aus und deaktivieren Sie das Kontrollkästchen „Controller verwenden“, da wir in diesem Projekt minimale APIs verwenden werden.
  8. Anderweitig in dem Fenster „Zusätzliche Informationen“ lassen Sie den „Authentifizierungstyp“ auf „Keine“ (Standard) eingestellt und stellen Sie sicher, dass die Kontrollkästchen „OpenAPI-Unterstützung aktivieren“, „Für HTTPS konfigurieren“, „Keine Top-Level-Anweisungen verwenden“ und „Docker aktivieren“ deaktiviert bleiben. Wir werden keine dieser Funktionen hier verwenden.
  9. Klicken Sie auf Erstellen.

Wir werden dieses ASP.NET Core Web App MVC-Projekt verwenden, um die Verwendung der integrierten Sicherheitsfunktionen von ASP.NET Core in den folgenden Abschnitten zu veranschaulichen.

HTTPS in ASP.NET Core erzwingen

SSL oder Secure Sockets Layer ist ein Protokoll, das eine sichere und verschlüsselte Kommunikation zwischen Clients und Servern über ein Netzwerk ermöglicht. Sie können die Verwendung von HTTPS erzwingen, um Ihre Anwendung zu sichern, indem Sie HTTP-Anfragen auf HTTPS umleiten.

Das folgende Code-Snippet zeigt, wie Sie die HTTPS-Sicherheit für Ihre Anwendung in der Program.cs-Datei konfigurieren können.

builder.Services.AddHttpsRedirection(options =>{ options.RedirectStatusCode = StatusCodes.Status307TemporaryRedirect; options.HttpsPort = 443;});

HTTP Strict Transport Security in ASP.NET Core verwenden

HTTP Strict Transport Security oder HSTS verhindert Angriffe durch Herabstufungsprotokolle und Cookie-Entführung, indem sichergestellt wird, dass der Webserver über eine HTTPS-Verbindung kommuniziert und alle unsicheren HTTP-Verbindungen blockiert werden. Beachten Sie, dass das Laufzeitmodul von ASP.NET Core standardmäßig das HSTS-Middleware hinzufügt.

Das folgende Code-Snippet veranschaulicht, wie wir diese Middleware nutzen können, um diese Sicherheitsbeschränkung durchzusetzen.

services.AddHsts(options =>{ options.IncludeSubDomains = true; options.MaxAge = TimeSpan.FromDays(7);});

Cross-Site Request Forgery-Angriffe in ASP.NET Core verhindern

Cross-Site Request Forgery-Angriffe (CSRF) täuschen einen Benutzer dazu, bösartige Aktivitäten auszuführen, während der Benutzer in eine Anwendung eingeloggt ist. Diese Angriffe werden häufig durch das Täuschen von Benutzern mit Phishing-E-Mails durchgeführt, um sie zu bösartigen Websites zu locken, wo sie die Berechtigungen eines authentifizierten Benutzers nutzen, um beispielsweise Gelder vom Bankkonto eines Opfers zu stehlen oder Online-Einkäufe mit der Kreditkarte des Opfers zu tätigen.

Sie können Benutzer Ihrer ASP.NET Core-Anwendung vor CSRF-Angriffen schützen, indem Sie Anti-Fälschungstoken verwenden. Wenn Sie Anti-Fälschungstoken in Ihrer Anwendung verwenden, werden zwei verschiedene Werte mit jedem POST an den Server gesendet. Einer der Werte wird als Browser-Cookie gesendet und einer wird als Formulardaten übermittelt. Sofern der Server nicht beide Werte empfängt, wird er die Anfrage ablehnen.

Um Anti-Fälschungstoken in Ihrer ASP.NET Core-Anwendung zu verwenden, fügen Sie sie in der Program.cs-Datei wie im folgenden Code-Snippet gezeigt hinzu.

builder.Services.AddAntiforgery(options =>{ options.FormFieldName = "DiesIstEinAntiFälschungsFeld"; options.HeaderName = "DiesIstEinAntiFälschungsHeader"; options.Cookie.Name = "DiesIstEinAntiFälschungsCookie";});

Cross-Site Scripting in ASP.NET Core verhindern

Cross-Site Scripting (XSS) bezieht sich auf das Einbringen eines bösartigen Skripts mithilfe von Eingabe- oder Formularfeldern einer Webseite in Ihrer Anwendung, mit dem Ziel, sensible Daten wie Anmeldeinformationen oder Cookies zu stehlen. Wenn ein Angreifer einen XSS-Angriff starten möchte, sendet er oft einen bösartigen Link an einen Benutzer und versucht dann, die Person dazu zu verleiten, auf den Link zu klicken. Sie können Cross-Site Scripting durch URL-Codierung, HTML-Codierung und reguläre Ausdrücke zur Validierung und Bereinigung von Eingaben vereiteln.

SQL-Injection in ASP.NET Core verhindern

SQL-Injection ist ein ernstes Sicherheitsproblem. SQL-Injection tritt auf, wenn ein Angreifer bösartige SQL-Befehle in Ihre dynamisch erstellten SQL-Abfragen einfügt. Solche Angriffe werden durch Sicherheitslücken in Datenbankabfragen ermöglicht, was zur Offenlegung sensibler Informationen führt. Sie können SQL-Injection durch die Verwendung von gespeicherten Prozeduren und parametrisierten Abfragen anstelle von dynamischen SQL-Abfragen und durch die Validierung von Benutzereingaben zur Entfernung potenziell bösartiger Zeichen vereiteln.

Benutzerdefinierte Fehlerseiten in ASP.NET Core erstellen

Wenn Sie keinen ordnungsgemäßen Fehlerbehandlungscode in Ihrer Anwendung implementieren, könnten Sie versehentlich sensible Informationen wie Konfigurationsdaten, Tabellennamen oder sogar Sozialversicherungsnummern preisgeben. Um dies zu vermeiden, können Sie eine benutzerdefinierte Fehlerwebseite in Ihrer Anwendung implementieren, damit bei einem Fehler die benutzerdefinierte Seite sichere Fehlermeldungen anstelle der potenziell gefährdenden Fehlermeldungen, die Ihre Anwendung generieren könnte, anzeigt.

Zusätzlich zur benutzerdefinierten Fehlerwebseite sollten Sie einen benutzerdefinierten Ausnahmefilter erstellen, indem Sie die ExceptionFilterAttribute-Klasse erweitern und die OnException-Methode überschreiben. Das folgende Code-Snippet zeigt, wie Sie die Route zur benutzerdefinierten Fehlerwebseite umleiten, wenn ein Fehler auftritt.

var result = new RedirectToRouteResult(new RouteValueDictionary{ {"controller", "Fehler"}, {"action", "MeinBenutzerdefinierterFehler"}});

Schließlich schreiben Sie den folgenden Code in der Program.cs-Datei, um den Ausnahmebehandler mit der Anforderungsverarbeitungspipeline zu registrieren.

if (!app.Environment.IsDevelopment()){ app.UseExceptionHandler("/Home/MeinBenutzerdefinierterFehler");}

Die Sicherung von Anwendungen umfasst alles von der Gewährleistung ordnungsgemäßer Konfigurationen bis hin zur Verhinderung der Preisgabe sensibler Daten. Die oben genannten sechs bewährten Praktiken sind nur ein Anfang. Um die Preisgabe sensibler Daten zu vermeiden, sollten Sie nicht nur HTTPS verwenden, sondern auch die Daten im Ruhezustand verschlüsseln und darauf verzichten, sensible Daten in unverschlüsselter Form in einer Datenbank oder irgendwo in der Anwendung zu speichern.

Sie sollten auch regelmäßig die Aktivitätsprotokolle überwachen, die von Ihrer Anwendung generiert werden. Die Analyse der Protokolle kann Ihnen Einblicke in Sicherheits-, Leistungs- und andere Probleme Ihrer Anwendung geben.

Fazit

Die Sicherung von Webanwendungen in ASP.NET Core erfordert eine Kombination aus proaktiven Maßnahmen und bewährten Praktiken. Durch die Implementierung von HTTPS, HSTS, Anti-Fälschungstoken, XSS- und SQL-Injection-Schutz sowie benutzerdefinierten Fehlerseiten können Sie Ihre Anwendung erheblich sicherer machen. Diese Strategien helfen nicht nur, Ihre Anwendung vor bekannten Bedrohungen zu schützen, sondern auch, die Vertraulichkeit, Integrität und Verfügbarkeit Ihrer Daten zu gewährleisten. Regelmäßige Überprüfungen und Aktualisierungen Ihrer Sicherheitsmaßnahmen sind unerlässlich, um den sich ständig weiterentwickelnden Bedrohungen im Bereich der Cybersicherheit standzuhalten.

Post teilen:

Brauchen Sie technische Unterstützung?

Ich stehe Ihnen zur Verfügung, um Ihnen bei allen technischen Problemen zu helfen. Kontaktieren Sie mich jetzt!