====== 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.00 | Angriff gemäss je einer Variante 2.3 |
| 4.1.4 | +0.50 | Angriff ist jeweils in separaten Files untergebracht|
==== 4.2 Verteidigung====
^Noten ^Beschreibung ^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 | +1.00 | Verteidigung gemäss je einer Variante 3.3 |
| 4.2.4 | +0.50 | Verteidigung sind in jeweils separaten Files untergebracht|
==== 4.3 Bonus ====
| 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.50 | Für die 2. und 3. Angriffe oder Verteidigungen wird die Hälfte der vollen Punktezahl der jeweiligen Massnahme vergeben |
| 4.3.3 | +0.50 |SQLi Daten sind in einer XML oder JSON-Datei |
==== 4.4 Malus ====
^Noten ^Beschreibung ^Hinweis ^
| 4.4.1 | -1.00 | Die Best-Practice-Coding-Standard wurden nicht eingehalten | [[https://wiki.bzz.ch/howto/codingstandards/start|Python]] |
| 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.4.8 | -1.00 | Team oder Teammitglieder erscheinen nicht zum Gespräch (Ausnahme: Höhere Gewalt). Abzug erhalten nur betroffenen Personen |
| 4.4.9 | -1.00 | Team ist nicht vorbereitet beim Fachgespräch|
==== 4.5 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.
----
[[https://creativecommons.org/licenses/by-nc-sa/4.0/|{{https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png}}]] Volkan Demir