Sicherheit hinzugefügt

2026-06-26 09:36:44 +02:00
parent fceb7d62e8
commit 9ec12ba531
+74
@@ -0,0 +1,74 @@
# Sicherheit
## Grundprinzip: Token niemals im Frontend
Angular-Apps sind reine Client-Side-Anwendungen. Jeder Token in `environment.prod.ts` oder im Code landet nach `ng build` als Klartext in den JS-Bundles und ist für jeden sichtbar, der die DevTools öffnet.
**Regel:** Der Directus API-Token gehört **ausschließlich** in den Nginx Proxy Manager.
## .gitignore — was niemals ins Repository darf
```gitignore
# Dev-Proxy mit Token
proxy.conf.json
# Dev-Environment mit Token
src/environments/environment.ts
# Build-Output
dist/
# Node-Module
node_modules/
```
Vorlagen ohne Token werden committed:
- `proxy.conf.example.json`
- `src/environments/environment.example.ts`
## Token-Handling nach Umgebung
| Umgebung | Token-Quelle | Token im Quellcode? |
| --- | --- | --- |
| `ng serve` (Dev) | `proxy.conf.json` (lokal, gitignored) | Nein |
| `ng build` (Prod) | Nginx Proxy Manager | Nein |
| Directus direkt | — | Nie |
## Token kompromittiert — Sofortmaßnahmen
1. Directus Admin-UI → **Settings****Access Tokens** → Token sofort löschen
2. Neuen Token erstellen
3. NPM Advanced Config aktualisieren
4. `proxy.conf.json` lokal aktualisieren
5. Testen ob alter Token wirklich ungültig ist:
```bash
curl -H "Authorization: Bearer ALTER_TOKEN" \
http://directus.neugasse.lan/items/landingpage
# Muss 403 zurückgeben
```
## Directus-Berechtigungen minimal halten
Der API-Token sollte nur Lesezugriff auf die `landingpage`-Collection haben — kein Schreibzugriff, kein Zugriff auf andere Collections.
In Directus Admin-UI → **Settings****Roles & Permissions** → Token-Rolle prüfen:
- `landingpage`: Read ✓
- Alle anderen Collections: kein Zugriff
## Tasmota-Geräte
- Steckdosen sind nur im LAN (`*.neugasse.lan`) erreichbar — kein externer Zugriff möglich
- Tasmota-WebUI sollte mit Passwort gesichert sein (`Configuration → Security`)
- Die HTTP-API der Steckdosen ist unverschlüsselt — ausreichend für LAN-Betrieb
## Angriffsvektor-Übersicht
| Vektor | Risiko | Mitigierung |
| --- | --- | --- |
| Token im JS-Bundle | Hoch | NPM-Proxy, kein Token im Code |
| Token im Git-Repository | Hoch | .gitignore, Token rotieren |
| Directus ohne Auth erreichbar | Mittel | Token erforderlich, Items auf `published` |
| Tasmota im Internet erreichbar | Niedrig | Nur LAN, kein Port-Forward |