Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.


Vorhergehende Überarbeitung
modul:m183:learningunits:lu02:05 [2025/12/08 09:53] (aktuell) vdemir
Zeile 1: Zeile 1:
 +====== 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 =====
 +
 +==== 4.1 Angriff ====
 +^Noten ^Beschreibung ^Hinweis ^
 +| 4.1.1 | <color #22b14c>+0.75</color> | Angriff gemäss einer Variante von 2.1 |
 +| 4.1.2 | <color #22b14c>+0.75</color> | Angriff gemäss je einer Variante und 2.2 | 
 +| 4.1.3 | <color #22b14c>+1.00</color> | Angriff gemäss je einer Variante 2.3 | 
 +| 4.1.4 | <color #22b14c>+0.50</color> | Angriff ist jeweils in separaten Files untergebracht| 
 +
 +==== 4.2 Verteidigung====
 +^Noten ^Beschreibung ^Hinweis ^
 +| 4.2.1 | <color #22b14c>+0.75</color> | Verteidigung gemäss einer Variante von 3.1 |
 +| 4.2.2 | <color #22b14c>+0.75</color> | Verteidigung gemäss je einer Variante und 3.2 | 
 +| 4.2.3 | <color #22b14c>+1.00</color> | Verteidigung gemäss je einer Variante 3.3 | 
 +| 4.2.4 | <color #22b14c>+0.50</color> | Verteidigung sind in jeweils separaten Files untergebracht| 
 +
 +==== 4.3 Bonus ====
 +| 4.3.1 | <color #22b14c>+0.25</color> | 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 | <color #22b14c>+0.50</color> | Für die 2. und 3. Angriffe oder Verteidigungen wird die Hälfte der vollen Punktezahl der jeweiligen Massnahme vergeben | 
 +| 4.3.3 | <color #22b14c>+0.50</color> |SQLi Daten sind in einer XML oder JSON-Datei |
 +
 +
 +==== 4.4 Malus ====
 +^Noten ^Beschreibung ^Hinweis ^
 +| 4.4.1 | <color #ed1c24>-1.00</color> | Die Best-Practice-Coding-Standard wurden nicht eingehalten | [[https://wiki.bzz.ch/howto/codingstandards/start|Python]] |
 +| 4.4.2 | <color #ed1c24>-0.50</color> | Es wird nicht kollaborativ und Ausfallsicher (inkl. Versionierung) gearbeitet |
 +| 4.4.3 | <color #ed1c24>-2.00</color> | Es können Fragen zum Lösungcode nicht korrekt oder gar nicht beantwortet werden. |
 +| 4.4.4 | <color #ed1c24>-1.50</color> | Pro angefangenem Tag Verspätung | 
 +| 4.4.5 | <color #ed1c24>-0.50</color> | Pro Downloadversuch: Link funktioniert nicht (abgelaufen, Berechtigungen fehlen, etc.) | 
 +| 4.4.6 | <color #ed1c24>-0.50</color> | Schriftsprache: Die Lernenden verwenden nicht die offiziellen Schriftsprache. | 
 +| 4.4.7 | <color #ed1c24>-0.10</color> | Verspäteter Anfang des Teams: pro Minute Verspätung | 
 +| 4.4.8 | <color #ed1c24>-1.00</color> | Team oder Teammitglieder erscheinen nicht zum Gespräch (Ausnahme: Höhere Gewalt). Abzug erhalten nur betroffenen Personen | 
 +| 4.4.9 | <color #ed1c24>-1.00</color> | 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
 +