Sicherheit
Die tatsächliche Sicherheitsgrenze von SwissKnife, HTTP-Header und Meldeweg.
SwissKnife ist eine statische Anwendung ohne Backend, Benutzerkonten oder API-Schlüssel. Mediendateien verlassen den Browser-Tab nie. Zur relevanten Angriffsfläche gehören die Abhängigkeitskette, das Docker-Image, GitHub-Actions-Workflows, HTTP-Header und die Browser-Laufzeit.
Header des Containers
nginx.conf sendet unter anderem:
Cross-Origin-Opener-Policy: same-originCross-Origin-Embedder-Policy: require-corpCross-Origin-Resource-Policy: same-originX-Content-Type-Options: nosniffReferrer-Policy: no-referrerX-Frame-Options: DENYPermissions-Policy: camera=(), microphone=(), geolocation=()- eine auf
'self'beschränkte CSP, wobeiscript-srczusätzlich'wasm-unsafe-eval'undblob:sowieimg-src/media-src/connect-src/worker-srcjeweilsblob:erlauben
Der Nginx-Prozess läuft nicht als root.
Ohne COOP/COEP ist SharedArrayBuffer nicht verfügbar und FFmpeg WASM kann nicht geladen werden. Siehe Reverse Proxy.
Header der Vercel-Demo
Die vercel.json des Produkts setzt dieselben Header-Gruppen für WASM und zusätzlich X-Robots-Tag: noindex, nofollow.
Datenschutz
Benutzerdateien werden nie hochgeladen. Der FFmpeg-Core wird beim ersten Medienvorgang vom eigenen Ursprung der Anwendung geladen, nicht von unpkg. Bildkonvertierungen über Canvas lösen diesen Download nicht aus.
Empfehlungen
- nutze einen HTTPS-Reverse-Proxy, wenn du die Anwendung außerhalb deines LAN veröffentlichst;
- präsentiere keine echte Instanz als „offizielle Demo“: Nutze demo.swissknife.lucas-homelab.fr;
- melde Schwachstellen gemäß der Sicherheitsrichtlinie, nicht in einem öffentlichen Issue, wenn sie die Garantie „keine Uploads“ schwächen.
SwissKnife hat weder JWTs noch Sitzungscookies oder geheime Umgebungsvariablen, die rotiert werden müssten.