====== LU02e - LB2 - Fokus: 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 =====
Wir starten bei der Note 1.0.
==== 4.1 Angriff ====
^# ^Note ^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 | +0.5 | Angriff gemäss je einer Variante 2.3 |
| 4.1.4 | +0.25 | Angriff ist jeweils in separaten Files untergebracht|
==== 4.2 Verteidigung====
^# ^Note ^Hinweis ^
| 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 | +0.5 | Verteidigung gemäss je einer Variante 3.3 |
| 4.2.4 | +0.25 | Verteidigung sind in jeweils separaten Files untergebracht|
==== 4.3 Bonus ====
^# ^Bonus ^Hinweis ^
| 4.3.1 | +0.25 | Die Thementeams werden in Konkurenz zueinander treten. Sofern ein wesentzlicher Teambeitrag vorhanden ist, erhält jedes Gewinnerteam jeweils einen Bonus von 0.25 Notenpunkten.|
| 4.3.2 | +0.25 | Für die 2. und 3. Angriffe oder Verteidigungen wird die Hälfte der vollen Punktezahl der jeweiligen Massnahme vergeben |
| 4.3.3 | +0.25 |SQLi Daten sind in einer XML oder JSON-Datei |
==== 4.4 Malus ====
^# ^Malus ^Hinweis ^
| 4.4.1 | -1.00 | Die Best-Practice-Coding-Standard wurden nicht eingehalten | [[https://wiki.bzz.ch/howto/codingstandards/start|Coding-Standards]] |
| 4.4.2 | -0.50 | Es wird nicht kollaborativ und Ausfallsicher (inkl. Versionierung) gearbeitet |
| 4.4.3 | -2.00 | Es können Fragen zum Lösungcode nicht korrekt oder gar nicht beantwortet werden. |
| 4.4.4 | -1.50 | Pro angefangenem Tag Verspätung |
| 4.4.5 | -0.50 | Pro Downloadversuch: Link funktioniert nicht (abgelaufen, Berechtigungen fehlen, etc.) |
| 4.4.6 | -0.50 | Schriftsprache: Die Lernenden verwenden nicht die offiziellen Schriftsprache. |
| 4.4.7 | -0.10 | Verspäteter Anfang des Teams: pro Minute Verspätung |
==== 4.5 Hinweise ====
* Es braucht kein Frontend, sprich der Code kann entweder über Commandline oder als separates Angriffsscript umgesetzt werden.
* Jedes Teammate kann alle Fragen zum Fousthema beantworten, sprich der Wissentransfer im Tandem wird durch das Tandem sichergestellt.
----
[[https://creativecommons.org/licenses/by-nc-sa/4.0/|{{https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png}}]] Volkan Demir