Schutz vor gängigen Schwachstellen: SQL-Injection, Cross-Site Scripting (XSS), CSRF

Web-Security

.. einfach erklärt mit C# Beispielcode

Sicheres Programmieren bedeutet auch, typische Schwachstellen zu kennen und zu vermeiden. Drei der häufigsten Angriffsarten sind SQL-Injection, Cross-Site Scripting (XSS) und Cross-Site Request Forgery (CSRF). Dieser Beitrag erklärt diese Risiken einfach und zeigt dir, wie du sie mit C#-Code sicher abwehrst.

1. SQL-Injection – Gefahr durch unsichere Datenbankabfragen

Was passiert?
Ein Angreifer schleust schädlichen SQL-Code in deine Datenbankanfragen ein, indem er Eingabefelder manipuliert. Das kann dazu führen, dass Daten gestohlen, gelöscht oder verändert werden.

Wie schützen?
Verwende parameterisierte Queries (Prepared Statements), statt SQL-Strings direkt mit Benutzereingaben zu bauen.

Beispiel in C#:

C#
string userInput = TextBoxUserInput.Text;

// Unsicher – vermeide so:
string query = "SELECT * FROM Users WHERE UserName = '" + userInput + "'";

// Sicher – so mit Parameter:
string querySafe = "SELECT * FROM Users WHERE UserName = @username";
using (SqlCommand cmd = new SqlCommand(querySafe, sqlConnection))
{
    cmd.Parameters.AddWithValue("@username", userInput);
    SqlDataReader reader = cmd.ExecuteReader();
    // verarbeite reader-Daten
}

2. Cross-Site Scripting (XSS) – Angriffe durch unsichere Webinhalte

Was passiert?
Feindlicher JavaScript-Code wird in Webseiten eingeschleust und führt auf Nutzerrechnern Aktionen aus (Cookies stehlen, Seiten manipulieren).

Wie schützen?
Alle Eingaben und Ausgaben von Benutzerdaten in HTML-Containern müssen sicher kodiert oder gefiltert werden.

Beispiel in C#:

Im ASP.NET Core Razor View kannst du Benutzereingaben automatisch HTML-kodieren:

C#
@Html.Encode(userInput)

Oder bei manueller Ausgabe:

C#
string safeOutput = System.Net.WebUtility.HtmlEncode(userInput)

Dadurch werden Sonderzeichen wie < und > sicher dargestellt und nicht als Code interpretiert.

3. Cross-Site Request Forgery (CSRF) – Schutz vor ungewollten Aktionen

Was passiert?
Ein Angreifer nutzt die Login-Session eines Nutzers aus, um unerwünschte Aktionen auf einer Website auszuführen (z.B. Einstellungen ändern).

Wie schützen?
Verwende Anti-CSRF-Tokens, die mit jedem Formular übertragen und vom Server geprüft werden.

Beispiel in ASP.NET Core MVC:

Im View:





HTML
<form method="post" asp-action="UpdateProfile">
    @Html.AntiForgeryToken()
    <!-- Formularfelder -->
    <button type="submit">Speichern</button>
</form>

Im Controller:





C#
[HttpPost]
[ValidateAntiForgeryToken]
public IActionResult UpdateProfile(UserProfile model)
{
    // Verarbeitung nur mit gültigem Token
}

Fazit

SQL-Injection, XSS und CSRF sind ernstzunehmende Gefahren, die aber mit den richtigen Maßnahmen in C# relativ leicht abzuwehren sind. Parameterisierte Queries, sichere Ausgabe von HTML-Inhalten und Anti-CSRF-Tokens sind grundlegende Werkzeuge für sichere Webanwendungen.

Mit diesen Schutzmaßnahmen schützt du deine Nutzer und erhöhst die Vertrauenswürdigkeit deiner Software deutlich.



Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert