Sicherheit
Sicherheitsmaßnahmen und verantwortungsvolle Offenlegung.
Security Policy
Sicherheitsprobleme melden
Bitte melde Schwachstellen nicht öffentlich über Issues, sondern per E-Mail an
security@postomnia.com. Wir
bestätigen den Eingang innerhalb von 72 Stunden.
Unterstützte Versionen
Es wird jeweils die aktuelle main-Version unterstützt.
Eingebaute Schutzmaßnahmen
- Passwörter: gehasht mit
scrypt+ zufälligem Salt (kein Klartext, kein MD5/SHA1). - Sessions: zufällige 256-bit-Tokens mit Ablaufzeit; **alle Sessions werden bei
Passwort-Reset invalidiert**.
- Brute-Force-Schutz: Login sperrt eine E-Mail nach 5 Fehlversuchen für 15 Minuten
(src/ratelimit.js).
- Rate-Limiting: enges Limit auf allen
/api/auth-Endpunkten (pro IP). - Team-Isolation: jede Ressource (Konten, Posts, Medien) ist strikt an eine
teamId gebunden; Cross-Team-Zugriffe liefern 404.
- Secret-Maskierung: OAuth-Tokens, Passwörter & API-Keys werden in API-Antworten
und Logs maskiert (token|secret|password|…).
- Verschlüsselung ruhender Zugangsdaten: Mit gesetztem
POSTOMNIA_ENCRYPTION_KEY werden OAuth- und Connector-Credentials per
AES-256-GCM verschlüsselt gespeichert.
- Stripe-Webhook: Signaturprüfung (HMAC-SHA256) gegen
STRIPE_WEBHOOK_SECRET;
ohne Secret ist der Endpunkt deaktiviert.
- Plan-Limits: serverseitig durchgesetzt (nicht im Client umgehbar).
- Production-Frontend: Browser können HTML, CSS, JavaScript und sichtbare Assets
immer herunterladen; das ist normal und kein Sicherheitsproblem. PostOmnia liefert
keine Source Maps aus (*.map -> 404), blockiert Dotfiles wie .env, deaktiviert
Directory Listing über Express Static und setzt Sicherheitsheader wie CSP,
X-Content-Type-Options, X-Frame-Options, Referrer-Policy und
Permissions-Policy.
Empfehlungen für den Produktivbetrieb
- Immer hinter TLS betreiben (
deploy/mit Caddy liefert automatische Zertifikate). - Starke, individuelle Werte für
POSTOMNIA_ADMIN_PASSWORD,POSTOMNIA_API_KEY
und POSTOMNIA_ENCRYPTION_KEY setzen. Den Verschlüsselungsschlüssel sicher
sichern: Ohne ihn lassen sich bereits verschlüsselte Credentials nicht lesen.
- Alle Secrets ausschließlich über Umgebungsvariablen/Secret-Manager, nie im Code.
/metricsmitMETRICS_TOKENschützen, wenn öffentlich erreichbar.- Für Multi-Instance-Betrieb Rate-Limits/Brute-Force-Zähler in einen geteilten Store
(z. B. Redis) auslagern – die aktuelle Implementierung ist single-instance.