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
3.1 Leicht umsetzbare Angriffe
- Angriffe gegen die Vertraulichkeit: Es können Daten aus einer Tabelle gelesen werden, die nicht gelesen werden dürften.
3.2 Mittel umsetzbare Angriffe
- Angriffe gegen die Verfügbarkeit: Das System wird zum Absturz gebraucht, sodass Online-Dienste nicht mehr angeboten werden können.
3.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 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-Mate jeweils einen Bonus von 0.25 Notenpunkten.
4.2 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.) |
4.2 Bonus
Noten | Beschreibung | Hinweis |
---|---|---|
+0.75 | Angriff gemäss einer Variante von 2.1 | |
+0.75 | Angriff gemäss je einer Variante und 2.2 | |
+1.0 | Angriff gemäss je einer Variante 2.3 | |
+0.75 | Verteidigung gemäss einer Variante von 3.1 | |
+0.75 | Verteidigung gemäss je einer Variante und 3.2 | |
+1.0 | Verteidigung gemäss je einer Variante 2.3 | |
+1.0 | Angriff und Verteidigung sind in separaten Files untergebracht |