48 lines
1.8 KiB
Markdown
48 lines
1.8 KiB
Markdown
# Issue #41 – CSP Header implementieren
|
||
|
||
## Komplexität: S (Small)
|
||
- Header-Zeile in index.php oder .htaccess hinzufügen
|
||
- Geschätzter Aufwand: < 30 Min
|
||
|
||
## Analyse
|
||
Statische Landingpage, keine dynamischen Scripte von Drittanbietern. CSP kann sehr restriktiv sein.
|
||
|
||
### Externe Ressourcen
|
||
- Google Maps iframe: `frame-src https://www.google.com/maps/`
|
||
- Lokale Fonts: `/fonts/` → `'self'`
|
||
- Lokale CSS: `/css/` → `'self'`
|
||
- Lokale JS: `/js/haus-schleusingen.js` → `'self'`
|
||
- Bilder: `'self' data:` (fuer inline-Bilder)
|
||
- `unsafe-inline` fuer Styles vermeiden → pruefen ob noetig
|
||
|
||
### Architektur-Entscheidung
|
||
CSP Header in `public/.htaccess` setzen (nicht in PHP), da:
|
||
- Zentraler Ort, einfach wartbar
|
||
- Kein PHP-Code noetig
|
||
- Apache-spezifisch, aber das ist die Produktionsumgebung
|
||
|
||
### CSP-Richtlinie
|
||
```
|
||
Content-Security-Policy: default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data:; font-src 'self'; frame-src https://www.google.com/ https://www.google.de/; connect-src 'self'
|
||
```
|
||
|
||
Hinweis: `unsafe-inline` fuer styles vorerst beibehalten, da inline-styles in Views verwendet werden (z.B. hero-bg `style="background-image:..."`). Spaeter durch Nonce/Hash ersetzen.
|
||
|
||
### Akzeptanzkriterien
|
||
- [ ] CSP-Header wird in jeder Response gesendet
|
||
- [ ] Alle Ressourcen (CSS, JS, Fonts, Bilder) laden korrekt
|
||
- [ ] Google Maps iframe funktioniert
|
||
- [ ] Keine CSP-Verletzungen im Browser-Console
|
||
|
||
### Abhängigkeiten
|
||
Keine. Unabhaengig von anderen Issues.
|
||
|
||
### Edge Cases
|
||
- `data:` URIs fuer Bilder -> `img-src 'self' data:`
|
||
- Google Maps iframe kann auch `www.google.de` nutzen
|
||
- `unsafe-inline` styles: View-Templates nutzen `style="..."` Attribute
|
||
|
||
### Sicherheitsrisiken
|
||
- `unsafe-inline` fuer styles: Minimales Risiko, aber acceptable fuer Landingpage
|
||
- Keine `unsafe-eval` oder `unsafe-inline` fuer scripts
|