Dies ist eine alte Version des Dokuments!
LU02f - LB2 - Fokusthema: SQLi
1. Einleitung
Dieses Thema ist gerade deswegen spannend, weil in dieser alle drei Schichten einer 3-Schichten-Architektur miteinbezogen werden müssen.
- Schicht: Sie benötigen eine Art Frontend-Simulation wie beispielsweise Postman oder Commandline-basiertes Backend-Script. Es braucht also keine schicke Oberfläche.
- Schicht: Sie müssen einen Node-Server programmieren.
- Schicht: Es braucht eine sinnvolle Datengrundlage, um SQL-Attacken durchführen zu können.
2. SQLI-Angriffe
2.1 Leicht umsetzbare Angriffe
- Angriffe gegen die Vertraulichkeit: Es können Daten aus einer Tabelle gelesen werden, die nicht gelesen werden dürften.
2.2 Mittel umsetzbare Angriffe
- Angriffe gegen die Verfügbarkeit: Das System wird zum Absturz gebraucht, sodass Online-Dienste nicht mehr angeboten werden können.
2.3 Schwer umsetzbare Angriffe
- Angriffe gegen die Integrität: Die Daten werden verändert, ohne dass die betroffene Person davon weiss.
3. Gegenmassnahmen gegen SQLi
3.1 Leichte Massnahmen
- Escaping: Spezielle Zeichen in Eingaben werden maskiert, damit sie von der Datenbank als Daten und nicht als Teil des SQL-Codes interpretiert werden.
- Input Validation: Überprüfung, ob Eingaben dem erwarteten Format, Typ oder Wertebereich entsprechen, bevor sie weiterverarbeitet werden.
3.2 Mittel-Komplexe Massnahmen
- Prepared Statement: die technische Umsetzung auf DB-Seite (vorkompiliertes Statement, wiederverwendbar).
- Parametrisierung: das Konzept, Werte sauber von der SQL-Struktur zu trennen.
3.3 Komplexe Massnahmen
- Stored Procedure: Vorgefertigte und in der Datenbank gespeicherte SQL-Routinen, die mit Parametern aufgerufen werden können, statt dynamisch SQL zusammenzubauen.
4. Bewertung
4.1 Angriff
| Noten | Beschreibung | Hinweis |
|---|---|---|
| 4.1.1 | +0.75 | Angriff gemäss einer Variante von 2.1 |
| 4.1.2 | +0.75 | Angriff gemäss je einer Variante und 2.2 |
| 4.1.3 | +1.0 | Angriff gemäss je einer Variante 2.3 |
| 4.1.4 | +0.5 | Angriff ist in jeweils separaten Files untergebracht |
4.2 Verteidigung
| 4.2.1 | +0.75 | Verteidigung gemäss einer Variante von 3.1 |
| 4.2.2 | +0.75 | Verteidigung gemäss je einer Variante und 3.2 |
| 4.2.3 | +1.0 | Verteidigung gemäss je einer Variante 2.3 |
| 4.2.4 | +0.5 | Verteidigung sind in jeweils separaten Files untergebracht |
4.3 Malus
| Noten | Beschreibung | Hinweis |
|---|---|---|
| -1.0 | Die Best-Practice-Coding-Standard wurden nicht eingehalten | Python |
| -0.5 | Es wird nicht kollaborativ und Ausfallsicher (inkl. Versionierung) gearbeitet | |
| -2.0 | Es können Fragen zum Lösungcode nicht korrekt oder gar nicht beantwortet werden. | |
| -1.5 | Pro angefangenem Tag Verspätung | |
| -0.5 | Pro Downloadversuch: Link funktioniert nicht (abgelaufen, Berechtigungen fehlen, etc.) | |
| -0.5 | Schriftsprache: Die Lernenden verwenden nicht die offiziellen Schriftsprache. | |
| -0.1 | Verspäteter Anfang des Teams: pro Minute Verspätung | |
| -1.0 | Team ist nicht vorbereitet beim Fachgespräch |
4.4 Hinweise
- Es braucht kein Frontend, sprich der Code kann entweder über Commandline oder als separates Angriffsscriptdurchgeführt werden.
- Jedes Teammate kann alle Fragen zum Fousthema beantworten, sprich der Wissentransfer im Tandem wird durch das Tandem sichergestellt.
- Bei Ungleicher Performance im Tandem wird individuell benotet.
- Die Thementeams werden in Konkurenz zueinander treten. Sofern ein wesentzlicher Teambeitrag vorhanden ist, erhält jedes Gewinnerteam jeweils einen Bonus von 0.25 Notenpunkten.
