Sicherheit hinzugefügt
+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 |
|
||||
Reference in New Issue
Block a user