07 – Sicherheit 🔒

Der unsichtbare Schutz deiner Webanwendung

🎯 1. Warum Sicherheit nicht optional ist

Ein unsicheres Backend kann:

Sicherheit beginnt nicht mit Firewalls – sondern mit jeder einzelnen Zeile Code.

🛡️ 2. Die drei Säulen der Backend-Sicherheit

  1. Input-Validierung: Prüfe, ob die Eingabe gültig ist (z. B. E-Mail-Format)
  2. Input-Escaping: Entferne oder entschärfe gefährliche Zeichen (zB. "<"script">")
  3. Sichere Datenbankabfragen: Verwende Prepared Statements – niemals direkte Strings!
💡 Merke: Wenn du eine dieser Säulen vernachlässigst, bricht das ganze System.

💥 3. SQL-Injection – das größte Risiko

Stell dir vor, ein Angreifer gibt in das Namensfeld ein:

' OR '1'='1

Ohne Schutz wird daraus diese SQL-Abfrage:

SELECT * FROM kontakte WHERE name = '' OR '1'='1';

→ Diese Abfrage gibt alle Datensätze zurück – inkl. Passwörter!

⚠️ Achtung: Dies ist kein theoretisches Risiko – SQL-Injection ist einer der häufigsten Angriffsvektoren im Web.

✅ 4. Lösung: Prepared Statements

Mit Prepared Statements trennst du Code von Daten.

Technologie Sicherer Code
PHP
$stmt = $pdo->prepare("INSERT INTO kontakte (name, email) VALUES (?, ?)");
$stmt->execute([$name, $email]);
Node.js
connection.execute(
  'INSERT INTO kontakte (name, email) VALUES (?, ?)',
  [name, email]
);

Die Werte werden automatisch bereinigt – egal, was eingegeben wurde.

🔤 5. Escaping von HTML-Ausgaben

Wenn du Benutzerdaten auf einer Webseite ausgibst, musst du Sonderzeichen entschärfen:

Technologie Funktion
PHP htmlspecialchars($eingabe, ENT_QUOTES, 'UTF-8')
Node.js Eigene Funktion oder Template-Engine (zB. EJS mit automatischem Escaping)

So wird aus <script>alert('hack')</script> harmloser Text.

🔑 6. Passwörter sicher speichern

Niemals Passwörter im Klartext speichern! Stattdessen:

In PHP nutzt du: password_hash() und password_verify() In Node.js: bcrypt-Bibliothek

⚠️ Niemals: MD5, SHA1 oder selbstgebaute Verschlüsselung verwenden!

🌐 7. Weitere Sicherheitshinweise

🧠 8. KI-Prompt-Training

Aufgabe: Zeichne auf Papier eine Tabelle mit drei Spalten:

  1. Risiko (z. B. „SQL-Injection“)
  2. Wie entsteht es? (kurze Erklärung)
  3. Wie verhindere ich es? (Lösung)

Danach formuliere einen Prompt, mit dem du KI um Hilfe bitten würdest, um ein konkretes Beispiel für eine sichere Passwortabfrage in PHP oder Node.js zu erhalten – aber nicht den gesamten Code zu kopieren.

➡️ 9. Nächster Schritt: Mini-API

Im nächsten Kapitel baust du ein kleines Projekt – und wendest alle Sicherheitsregeln direkt an.

🎓 Sicherheit ist keine Option – sie ist die Grundlage.

→ Zu Modul 08: Mini-API