You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
- im Dev-Mode sind auch alle Addons (z.B. MFA) kostenlos)
318
316
- Open Source Alternative: [StackAuth](https://stack-auth.com)
319
317
- Noch nicht so ausgereift, aber grundsätzlich gleiche Features
320
-
- Auch hier sind erste 10k Nutzer kostenlos
318
+
- Auch hier sind erste 10k Nutzer kostenlos
321
319
- Zusätzlich Self-Hosting, da vollständig Open Source
322
320
323
-
324
321
## Theoretische Fragen
325
322
326
323
- Erklären Sie den Unterschied zwischen _Authentifizierung_ und _Autorisierung_?
327
324
- Welche besondere Herausforderung gibt es bei der Authentifizierung im Web durch das HTTP-Protokoll?
328
325
- Erläutern Sie welche Probleme bei der Authentifizierung mit Session-Cookies bei horizontaler Skalierung auftreten können.
329
326
330
-
331
327
# Web-spezifische Sicherheitslücken
332
328
333
329
## Injection Attacks
@@ -350,13 +346,16 @@ Beispiel: Selektion von allen Posts mit einem Suchbegriff:
350
346
351
347
```sql
352
348
SELECT * FROM posts WHERE title LIKE '<Suchbegriff>';
353
-
````
349
+
```
354
350
355
-
- Suchbegriff kommt z.B. aus einem Suchfeld und wird in Variable `search` gespeichert
351
+
- Suchbegriff kommt z.B. aus einem Suchfeld und wird über Query-Parameter `query` übergeben
356
352
- JavaScript baut die SQL-Abfrage:
357
353
358
354
```javascript
359
-
const query = `SELECT * FROM posts WHERE posts.title LIKE '${req.query.query}'`;
355
+
const query = request.query.query;
356
+
const sql = `SELECT * FROM posts
357
+
WHERE posts.title
358
+
LIKE '%${query}%'`;
360
359
```
361
360
362
361
## SQLi Einführung (2)
@@ -410,7 +409,7 @@ db.execute(query, [search]);
410
409
411
410
## Praxisaufgabe 1
412
411
413
-
1. Probiert die SQL-Injection im Beispiel-Code in `27_Web_Security/injections` wie zu triggern, um alle posts abzurufen. (_Hinweis_: ist in diesem Beispiel sogar noch einfacher)
412
+
1. Probiert die SQL-Injection im Beispiel-Code in `27_Web_Security/injections` wie zu triggern, um alle posts abzurufen.
414
413
2. Ruft zusätzlich die IDs und Namen aller Autoren ab (_Hinweis_: `UNION SELECT`und füll-Felder ;) )
415
414
3. Fixt die SQL-Injection im Beispiel-Code mit Hilfe der Doku: [https://www.npmjs.com/package/sqlite](https://www.npmjs.com/package/sqlite)
416
415
@@ -420,9 +419,9 @@ db.execute(query, [search]);
420
419
421
420
Verschiedene Arten:
422
421
423
-
- Reflected: Eingabe wird vom Server an Nutzer zurückgegeben, aber nicht gespeichert
424
-
- Stored: Eingabe wird gespeichert und später ausgegeben
425
-
- DOM-Based: Eingabe wird durch JavaScript fehlerhaft verarbeitet
422
+
- Reflected: Eingabe wird vom Server an Nutzer zurückgegeben, aber nicht gespeichert
423
+
- Stored: Eingabe wird gespeichert und später ausgegeben
424
+
- DOM-Based: Eingabe wird durch JavaScript fehlerhaft verarbeitet
426
425
427
426
## XSS Einführung (2)
428
427
@@ -486,8 +485,8 @@ Einfaches Beispiel: `<script>alert('XSS')</script>` als Suchbegriff
486
485
## Praxisaufgabe 2
487
486
488
487
Die Anwendung aus Praxisaufgabe 1 hat auch eine Stored XSS Lücke.
489
-
Zeigt, wie sich diese mit Hilfe von curl ausnutzen lässt und injiziert ein Script, dass den Hintergrund der Seite ändert.
490
-
(_Hinweis_: da das JavaScript der Suche den Code dynamisch einbindet, probiert es mit inline Event-Handlern in HTML Attributen oder javascript URLs)
488
+
Zeigt, wie sich ein Script injizieren lässt, dass den Hintergrund der Seite ändert.
489
+
(_Hinweis_: Zum Speichern wird der Endpunkt `/post` benötigt. Da das JavaScript der Suche den Code dynamisch einbindet, probiert es mit inline Event-Handlern (`onclick` etc.) in HTML Attributen oder javascript URLs)
491
490
492
491
## Cross-Site Request Forgery (CSRF)
493
492
@@ -569,7 +568,6 @@ Zeigt, wie sich diese mit Hilfe von curl ausnutzen lässt und injiziert ein Scri
569
568
- Kann auch inline-Scripte wieder erlauben
570
569
- Mehr Informationen bei [MDN](https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP)
571
570
572
-
573
571
## Theoretische Fragen
574
572
575
573
- Erklären Sie den Begriff _Injection Attack_.
@@ -583,7 +581,6 @@ Zeigt, wie sich diese mit Hilfe von curl ausnutzen lässt und injiziert ein Scri
583
581
- Was kann ein Angreifer durch einen XSS-Angriff erreichen?
584
582
- Erklären Sie den Begriff _Content Security Policy_ und nennen Sie den Hauptvorteil der sich daraus ergibt.
0 commit comments