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
|
||||
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.
|
||||
3. **Setup-Status prüfen**:
|
||||
```bash
|
||||
|
|
|
|||
|
|
@ -432,14 +432,15 @@ git push origin feature/my-feature
|
|||
|
||||
### Git Hook (optional Absicherung)
|
||||
|
||||
Für Deployments ohne HTTPS muss `docker/prod/docker-compose.yml` die Zeile `- ADMIN_SESSION_COOKIE_SECURE=false` enthalten.
|
||||
Ein vorgefertigtes Pre-Commit-Hook stellt sicher, dass diese Zeile vorhanden ist bzw. automatisch korrigiert wird:
|
||||
Standard-Deployments sollten `ADMIN_SESSION_COOKIE_SECURE=true` behalten, damit das Session-Cookie nur über HTTPS übertragen 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
|
||||
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
|
||||
|
||||
|
|
|
|||
|
|
@ -38,8 +38,16 @@ services:
|
|||
- NODE_ENV=production
|
||||
- ADMIN_SESSION_SECRET=MvFhivVIPIXvSGvWGfGOiQCkUJrmUsjWQTNGUgnSmtpsGHQlKruTBEBZgbVvOHHr
|
||||
- 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:
|
||||
npm-nw:
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ set -euo pipefail
|
|||
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
|
||||
TARGET_FILE="$ROOT_DIR/docker/prod/docker-compose.yml"
|
||||
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
|
||||
exit 0
|
||||
|
|
@ -28,7 +28,7 @@ changed = False
|
|||
|
||||
if 'ADMIN_SESSION_COOKIE_SECURE' in text:
|
||||
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:
|
||||
changed = new_text != text
|
||||
else:
|
||||
|
|
@ -39,7 +39,7 @@ else:
|
|||
changed = True
|
||||
|
||||
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)
|
||||
|
||||
if changed:
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user