fix: changed ADMIN_SESSION_COOKIE_SECURE=true with pre-commit script
This commit is contained in:
parent
b912670cab
commit
80aca79b32
|
|
@ -24,7 +24,7 @@ Die API verwendet **zwei verschiedene Authentifizierungs-Mechanismen** für unte
|
||||||
```env
|
```env
|
||||||
ADMIN_SESSION_SECRET=$(openssl rand -hex 32)
|
ADMIN_SESSION_SECRET=$(openssl rand -hex 32)
|
||||||
```
|
```
|
||||||
> ℹ️ Standardmäßig setzt der Server in Production HTTPS-Only Cookies (`Secure`). Falls deine Installation **ohne HTTPS** hinter einem internen Netzwerk läuft, kannst du das Verhalten über `ADMIN_SESSION_COOKIE_SECURE=false` explizit deaktivieren. Verwende dies nur in vertrauenswürdigen Umgebungen!
|
> ℹ️ Standardmäßig setzt der Server in Production HTTPS-Only Cookies (`Secure`). Falls deine Installation **ohne HTTPS** hinter einem internen Netzwerk läuft, kannst du das Verhalten über `ADMIN_SESSION_COOKIE_SECURE=false` explizit deaktivieren. Verwende dies nur in vertrauenswürdigen Umgebungen und setze den Wert vorzugsweise per lokaler Compose-Override-Datei oder geheimen ENV-Variablen, damit das Repo weiterhin den sicheren Default `true` behält.
|
||||||
2. **Backend starten** – Migration legt Tabelle `admin_users` an.
|
2. **Backend starten** – Migration legt Tabelle `admin_users` an.
|
||||||
3. **Setup-Status prüfen**:
|
3. **Setup-Status prüfen**:
|
||||||
```bash
|
```bash
|
||||||
|
|
|
||||||
|
|
@ -432,14 +432,15 @@ git push origin feature/my-feature
|
||||||
|
|
||||||
### Git Hook (optional Absicherung)
|
### Git Hook (optional Absicherung)
|
||||||
|
|
||||||
Für Deployments ohne HTTPS muss `docker/prod/docker-compose.yml` die Zeile `- ADMIN_SESSION_COOKIE_SECURE=false` enthalten.
|
Standard-Deployments sollten `ADMIN_SESSION_COOKIE_SECURE=true` behalten, damit das Session-Cookie nur über HTTPS übertragen wird.
|
||||||
Ein vorgefertigtes Pre-Commit-Hook stellt sicher, dass diese Zeile vorhanden ist bzw. automatisch korrigiert wird:
|
Das bereitgestellte Pre-Commit-Hook stellt sicher, dass der Wert in `docker/prod/docker-compose.yml` automatisch auf `true` zurückgesetzt wird, falls er versehentlich verändert wurde (z. B. nach einem Test auf HTTP-only Hardware):
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
ln -s ../../scripts/git-hooks/pre-commit .git/hooks/pre-commit
|
ln -s ../../scripts/git-hooks/pre-commit .git/hooks/pre-commit
|
||||||
```
|
```
|
||||||
|
|
||||||
Nach der Installation aktualisiert der Hook die Datei bei Bedarf und staged sie direkt. Entfernen kannst du ihn jederzeit über `rm .git/hooks/pre-commit`.
|
Nach der Installation aktualisiert der Hook die Datei bei Bedarf und staged sie direkt.
|
||||||
|
Für lokale HTTP-Lab-Deployments nutze eine separate (gitignorierte) `docker-compose.override.yml`, um `ADMIN_SESSION_COOKIE_SECURE=false` nur zur Laufzeit zu setzen. Entfernen kannst du den Hook jederzeit über `rm .git/hooks/pre-commit`.
|
||||||
|
|
||||||
## Nützliche Befehle
|
## Nützliche Befehle
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -38,8 +38,16 @@ services:
|
||||||
- NODE_ENV=production
|
- NODE_ENV=production
|
||||||
- ADMIN_SESSION_SECRET=MvFhivVIPIXvSGvWGfGOiQCkUJrmUsjWQTNGUgnSmtpsGHQlKruTBEBZgbVvOHHr
|
- ADMIN_SESSION_SECRET=MvFhivVIPIXvSGvWGfGOiQCkUJrmUsjWQTNGUgnSmtpsGHQlKruTBEBZgbVvOHHr
|
||||||
- ADMIN_SESSION_DIR=/usr/src/app/src/data/sessions
|
- ADMIN_SESSION_DIR=/usr/src/app/src/data/sessions
|
||||||
- ADMIN_SESSION_COOKIE_SECURE=false
|
# ⚠️ Für HTTP-only Labs per Override auf "false" setzen (nicht im Repo committen)
|
||||||
|
- ADMIN_SESSION_COOKIE_SECURE=true
|
||||||
|
|
||||||
|
sqliteweb:
|
||||||
|
image: tomdesinto/sqliteweb
|
||||||
|
ports:
|
||||||
|
- 8080:8080
|
||||||
|
volumes:
|
||||||
|
- image_data:/usr/src/app/src/data/:ro
|
||||||
|
command: /usr/src/app/src/data/db/image_uploader.db
|
||||||
|
|
||||||
networks:
|
networks:
|
||||||
npm-nw:
|
npm-nw:
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@ set -euo pipefail
|
||||||
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
|
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
|
||||||
TARGET_FILE="$ROOT_DIR/docker/prod/docker-compose.yml"
|
TARGET_FILE="$ROOT_DIR/docker/prod/docker-compose.yml"
|
||||||
ANCHOR_LINE=" - ADMIN_SESSION_DIR=/usr/src/app/src/data/sessions"
|
ANCHOR_LINE=" - ADMIN_SESSION_DIR=/usr/src/app/src/data/sessions"
|
||||||
EXPECTED_LINE=" - ADMIN_SESSION_COOKIE_SECURE=false"
|
EXPECTED_LINE=" - ADMIN_SESSION_COOKIE_SECURE=true"
|
||||||
|
|
||||||
if [[ ! -f "$TARGET_FILE" ]]; then
|
if [[ ! -f "$TARGET_FILE" ]]; then
|
||||||
exit 0
|
exit 0
|
||||||
|
|
@ -28,7 +28,7 @@ changed = False
|
||||||
|
|
||||||
if 'ADMIN_SESSION_COOKIE_SECURE' in text:
|
if 'ADMIN_SESSION_COOKIE_SECURE' in text:
|
||||||
pattern = re.compile(r'(\-\s*ADMIN_SESSION_COOKIE_SECURE\s*=\s*)([^\n\r]+)')
|
pattern = re.compile(r'(\-\s*ADMIN_SESSION_COOKIE_SECURE\s*=\s*)([^\n\r]+)')
|
||||||
new_text, count = pattern.subn(r'\1false', text, count=1)
|
new_text, count = pattern.subn(r'\1true', text, count=1)
|
||||||
if count:
|
if count:
|
||||||
changed = new_text != text
|
changed = new_text != text
|
||||||
else:
|
else:
|
||||||
|
|
@ -39,7 +39,7 @@ else:
|
||||||
changed = True
|
changed = True
|
||||||
|
|
||||||
if expected not in new_text:
|
if expected not in new_text:
|
||||||
print('ERROR: Failed to ensure ADMIN_SESSION_COOKIE_SECURE=false in docker-compose.yml', file=sys.stderr)
|
print('ERROR: Failed to ensure ADMIN_SESSION_COOKIE_SECURE=true in docker-compose.yml', file=sys.stderr)
|
||||||
sys.exit(3)
|
sys.exit(3)
|
||||||
|
|
||||||
if changed:
|
if changed:
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user