.. 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#:
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:
@Html.Encode(userInput)Oder bei manueller Ausgabe:
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:
<form method="post" asp-action="UpdateProfile">
@Html.AntiForgeryToken()
<!-- Formularfelder -->
<button type="submit">Speichern</button>
</form>Im Controller:
[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.


Schreibe einen Kommentar