07 – Sicherheit 🔒
Der unsichtbare Schutz deiner Webanwendung
🎯 1. Warum Sicherheit nicht optional ist
Ein unsicheres Backend kann:
- Alle Benutzerdaten preisgeben
- Gelöschte oder manipulierte Inhalte verursachen
- Den gesamten Server übernehmen lassen
- Deine Schule rechtlich belasten
Sicherheit beginnt nicht mit Firewalls – sondern mit jeder einzelnen Zeile Code.
🛡️ 2. Die drei Säulen der Backend-Sicherheit
- Input-Validierung: Prüfe, ob die Eingabe gültig ist (z. B. E-Mail-Format)
- Input-Escaping: Entferne oder entschärfe gefährliche Zeichen (zB. "<"script">")
- Sichere Datenbankabfragen: Verwende Prepared Statements – niemals direkte Strings!
💥 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!
✅ 4. Lösung: Prepared Statements
Mit Prepared Statements trennst du Code von Daten.
| Technologie | Sicherer Code |
|---|---|
| PHP |
|
| Node.js |
|
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:
- Hashing: Umwandlung in einen Einweg-verschlüsselten Wert
- Salt: Zufällige Zeichenkette, die vor dem Hashing hinzugefügt wird
In PHP nutzt du: password_hash() und password_verify()
In Node.js: bcrypt-Bibliothek
🌐 7. Weitere Sicherheitshinweise
- ❌ Keine sensiblen Daten im Quelltext (zB. Datenbank-Passwörter)
- ✅ Nutze `.env`-Dateien (außerhalb des Webverzeichnisses)
- ✅ Aktualisiere deine Bibliotheken regelmäßig (npm, Composer)
- ✅ Teste dein Formular mit ungültigen Eingaben (zB. Skripte, lange Texte)
🧠 8. KI-Prompt-Training
Aufgabe: Zeichne auf Papier eine Tabelle mit drei Spalten:
- Risiko (z. B. „SQL-Injection“)
- Wie entsteht es? (kurze Erklärung)
- 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.