lessonKey: "sql-injection-shop" title: "SQL Injection Angriff - Online Shop Demo" description: "Lernen Sie, wie SQL Injection-Schwachstellen funktionieren, anhand eines realistischen Online-Shop-Szenarios" difficultyLevel: "intermediate" estimatedDuration: 20 module: "sql-injection-shop" steps: - id: "intro" type: "content" title: "Was ist SQL Injection?" content: | SQL Injection ist eine der gefährlichsten Schwachstellen in Webanwendungen. Sie tritt auf, wenn ein Angreifer bösartigen SQL-Code in eine Abfrage einfügen kann, wodurch er folgendes tun kann: • Auf nicht autorisierte Daten zugreifen • Datenbankeinträge ändern oder löschen • Authentifizierung umgehen • Administrative Operationen ausführen In dieser Lektion werden Sie einen verwundbaren Online-Shop erkunden, um zu verstehen, wie SQL Injection funktioniert und warum korrekte Eingabevalidierung entscheidend ist. - id: "shop-demo" type: "interactive" title: "Verwundbarer Online-Shop" interactiveComponent: "SQLShopDemo" content: | Unten sehen Sie einen vereinfachten Online-Shop mit einer Produktsuchfunktion. Die Suchfunktion ist anfällig für SQL Injection. Versuchen Sie zunächst, nach normalen Produkten zu suchen, und experimentieren Sie dann mit SQL Injection-Techniken. - id: "question-1" type: "question" questionType: "multiple_choice" question: "Welche der folgenden Sucheingaben könnten verwendet werden, um SQL Injection auszunutzen?" options: - id: "normal-search" text: "laptop" isCorrect: false points: 0 - id: "single-quote" text: "' OR '1'='1" isCorrect: true points: 15 - id: "union-select" text: "' UNION SELECT username, password FROM users--" isCorrect: true points: 15 - id: "drop-table" text: "'; DROP TABLE products--" isCorrect: true points: 10 maxPoints: 40 feedback: correct: "Richtig! Diese Eingaben manipulieren die SQL-Abfragestruktur." incorrect: "Überprüfen Sie die Demo. SQL Injection-Exploits verwenden Sonderzeichen wie Anführungszeichen und SQL-Schlüsselwörter." - id: "detection" type: "content" title: "Wie SQL Injection funktioniert" content: | Eine verwundbare Abfrage könnte so aussehen: SELECT * FROM products WHERE name LIKE '%[USER_INPUT]%' Wenn ein Benutzer nach "laptop" sucht, wird die Abfrage zu: SELECT * FROM products WHERE name LIKE '%laptop%' Wenn er aber "' OR '1'='1" eingibt, wird sie zu: SELECT * FROM products WHERE name LIKE '%' OR '1'='1%' Die Bedingung OR '1'='1' ist immer wahr, also werden ALLE Produkte zurückgegeben! Gefährlichere Angriffe können Daten aus anderen Tabellen extrahieren oder sogar Daten löschen. - id: "question-2" type: "question" questionType: "single_choice" question: "Was ist der BESTE Weg, um SQL Injection-Schwachstellen zu verhindern?" options: - id: "input-filtering" text: "Gefährliche Zeichen wie Anführungszeichen und Semikolons herausfiltern" isCorrect: false points: 0 - id: "parameterized-queries" text: "Parametrisierte Abfragen (Prepared Statements) verwenden" isCorrect: true points: 30 - id: "stored-procedures" text: "Nur gespeicherte Prozeduren für den Datenbankzugriff verwenden" isCorrect: false points: 0 - id: "input-length" text: "Die Länge von Benutzereingaben begrenzen" isCorrect: false points: 0 maxPoints: 30 feedback: correct: "Ausgezeichnet! Parametrisierte Abfragen trennen SQL-Code von Benutzerdaten und machen Injection unmöglich." incorrect: "Während Filterung hilft, sind parametrisierte Abfragen der Goldstandard. Sie stellen sicher, dass Benutzereingaben immer als Daten behandelt werden, niemals als SQL-Code." - id: "mitigation" type: "content" title: "SQL Injection verhindern" content: | Best Practices zur Verhinderung von SQL Injection: 1. **Parametrisierte Abfragen** (Am wichtigsten) • Prepared Statements mit gebundenen Parametern verwenden • Niemals Benutzereingaben in SQL-Strings konkatenieren 2. **Eingabevalidierung** • Datentypen validieren (Zahlen, E-Mails, etc.) • Allowlists für erwartete Werte verwenden 3. **Minimale Berechtigungen** • Datenbankkonten sollten minimale Berechtigungen haben • Nur-Lese-Konten für Leseoperationen 4. **Web Application Firewalls** • Können SQL Injection-Versuche erkennen und blockieren • Sollten als zusätzliche Ebene verwendet werden, nicht als primäre Verteidigung 5. **Regelmäßige Sicherheitsaudits** • Code-Reviews und Penetrationstests • Automatisiertes Schwachstellen-Scanning scoring: passingScore: 90 maxTotalPoints: 180 # 70 from questions + up to 110 from 3 simplified challenges (30+40+80) with time bonuses