SQL-injektion og XSS
Kommunikation og IT A · HTX · A-niveau · IT-sikkerhed
🔒 SQL-injektion og XSS
SQL-injektion opstår når bruger-input indsættes direkte i SQL-forespørgsler:
```python
SÅRBART:
forespørgsel = f"SELECT * FROM brugere WHERE navn = '{input}' "
Hvis input = "' OR '1'='1' → returnerer ALLE brugere!
SIKRET — parametriseret forespørgsel:
cursor.execute("SELECT * FROM brugere WHERE navn = ?", (input,))
```
XSS (Cross-Site Scripting) indsætter JavaScript i sider der vises til andre brugere:
```html
<!-- Sårbar kommentar-funktion -->
<p>Kommentar: <script>document.cookie</script></p>
```
Angriberen stjæler cookies, session-tokens eller omdirigerer brugere.
Forsvar mod SQL-injektion: parametriserede queries / prepared statements.
Forsvar mod XSS:
- Escape HTML-output:
<→<,>→> - Content Security Policy (CSP) HTTP-header
- Brug framework-funktioner (Jinja2 auto-escapes, React escaper som standard)
Stored vs. Reflected XSS: Stored gemmes i database og rammer alle. Reflected sendes via URL og rammer kun den der klikker.
Læringsmål
- Demonstrere hvordan SQL-injektion fungerer og hvordan det stoppes
- Forklare forskellen på stored og reflected XSS
- Implementere parametriserede queries i Python
- Bruge HTML-escaping korrekt for at forhindre XSS
Sådan kan du arbejde med emnet
- Giv et eksempel på en SQL-injektion og forklar hvordan parameteriserede forespørgsler forhindrer den
- Forklar hvad cross-site scripting (XSS) er, og giv et eksempel på et sårbart inputfelt
- Diskutér hvordan input-validering kan reducere risikoen for begge angreb
Træningsforslag
- Test SQL-injektion i et sandboxet miljø (DVWA)
- Byg en kommentar-funktion med og uden XSS-beskyttelse og demonstrér forskellen
- Læs HackerOne's disclosure-rapporter for inspiration
Øv dette emne med AI — quizzer, forklaringer og feedback tilpasset dit niveau.
Prøv Fagportalen gratis