Funn fra sikkerhetsgjennomgang: - HØY: post_id ble ikke validert, så en gjest kunne nå andres innlegg via gjest/../../posts/<slug> (lese utkast, laste opp/slette bilder, publisere eierens utkast). Slug og gjestenavn valideres nå mot samme alfabet de lages med, og stien sjekkes etter oppslag. - Bilder: pikselantall sjekkes før dekoding (maks 40 MP), og DecompressionBombError håndteres. - Innlogging: CSRF-token kreves også på login (login-CSRF), og innloggingsbrems etter 5 feil per brukernavn. - Passordbytte ugyldiggjør alle andre sesjoner (stempel i cookien). - Content-Security-Policy og X-Frame-Options på alle sider; admin har ingen inline script lenger (admin.js). - Gjestenavn og eier-slugs kan ikke lenger kollidere på /navn/. - Healthcheck respekterer SOAPBOX_BASE_PATH; login-redirect beholder base path; run.sh dropper capabilities og setter minnegrense; uv pinnet til 0.11. Rettet også en reell feil: existing_slugs() listet feil katalog (Path / er identitet), så slug-unikhet virket ikke. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JcEy43fNYpwg6K6oTKakWR
32 lines
1.1 KiB
Bash
Executable file
32 lines
1.1 KiB
Bash
Executable file
#!/usr/bin/env bash
|
||
# Starter (eller erstatter) soapbox-containeren med innstillinger fra .env.
|
||
# Idempotent: kjør på nytt etter build.sh for å rulle ut nytt image.
|
||
set -euo pipefail
|
||
cd "$(dirname "$0")"
|
||
|
||
ENV_FILE="${ENV_FILE:-.env}"
|
||
if [[ ! -f "$ENV_FILE" ]]; then
|
||
echo "Fant ikke $ENV_FILE – kopier .env.example til .env og juster." >&2
|
||
exit 1
|
||
fi
|
||
|
||
# Verdier som bare gjelder for podman-kjøringen (ikke appen)
|
||
PORT="$(grep -E '^SOAPBOX_PORT=' "$ENV_FILE" | cut -d= -f2- || true)"
|
||
VOLUME="$(grep -E '^SOAPBOX_VOLUME=' "$ENV_FILE" | cut -d= -f2- || true)"
|
||
MEMORY="$(grep -E '^SOAPBOX_MEMORY=' "$ENV_FILE" | cut -d= -f2- || true)"
|
||
PORT="${PORT:-8080}"
|
||
VOLUME="${VOLUME:-soapbox-data}"
|
||
MEMORY="${MEMORY:-512m}"
|
||
IMAGE="${1:-localhost/soapbox:latest}"
|
||
|
||
podman run -d --replace --name soapbox \
|
||
--restart unless-stopped \
|
||
--cap-drop=all --security-opt=no-new-privileges \
|
||
--memory "$MEMORY" \
|
||
-p "127.0.0.1:${PORT}:8080" \
|
||
-v "${VOLUME}:/data:Z" \
|
||
--env-file "$ENV_FILE" \
|
||
"$IMAGE"
|
||
|
||
echo "soapbox kjører på http://127.0.0.1:${PORT}/ (data i ${VOLUME})"
|
||
echo "Logger: podman logs -f soapbox"
|