Secrets und Datenschutz
Schlüssel, Tokens und personenbezogene Daten sind das, was Angreifer tatsächlich suchen. Schützen Sie sie im Ruhezustand, bei der Übertragung und in Ihrer Quellcode-Historie.
Checkliste
- Secrets aus Code und Client fernhalten. API-Schlüssel, Datenbankpasswörter und Signatur-Secrets gehören in Umgebungsvariablen oder einen Secrets-Manager. Sie dürfen nie fest im Code stehen und nie an den Browser gesendet werden. KI-Tools betten Schlüssel häufig direkt in Client-Code ein. Durchsuchen Sie Ihr Bundle nach allem, was wie ein Schlüssel aussieht.
- Secrets aus Git fernhalten. Fügen Sie
.env,*.pemund*.keyvor dem ersten Commit zu.gitignorehinzu. Alles, was jemals committet wurde, gilt als kompromittiert, auch wenn es später gelöscht wird, denn es bleibt in der Historie. Rotieren Sie es. - Sensible Daten im Ruhezustand verschlüsseln. Verwenden Sie authentifizierte Verschlüsselung (AES-256-GCM) für gespeicherte Secrets und sensible Nutzerinhalte, und bewahren Sie den Schlüssel außerhalb der Datenbank auf.
- Alles über TLS ausliefern. Kein Klartext-HTTP für alles, was ein Credential oder personenbezogene Daten trägt. Leiten Sie HTTP auf HTTPS um und setzen Sie HSTS.
- Keine Secrets oder personenbezogenen Daten in URLs. Query-Strings landen in Logs, im Browserverlauf und im Referer-Header. Übertragen Sie sie im Body.
- Nur das Minimum zurückgeben. Ein Profil- oder "me"-Endpunkt sollte nur zurückgeben, was die UI braucht, niemals Passwort-Hashes, Schlüssel oder interne Flags.
- Tokens dort speichern, wo Skripte nicht herankommen, sofern möglich. Ein JWT im
localStorageist von jedem Skript lesbar, und ein XSS stiehlt es. Ein httpOnly-Cookie vermeidet das, allerdings um den Preis einer CSRF-Behandlung. In jedem Fall ist eine strikte Content-Security-Policy Ihr Sicherheitsnetz. Siehe Infrastruktur. - Datenrechte unterstützen. Lassen Sie Benutzer ihre Daten exportieren und löschen, und bereinigen Sie Daten nach einem Zeitplan. Das ist gute Praxis und für viele eine gesetzliche Pflicht.
Testvorgehen
- Durchsuchen Sie in den Browser-Entwicklertools den Netzwerk-Tab und das JS-Bundle nach
sk-,eyJ,password,secretundkey. - Scannen Sie das Repo und seine Historie mit einem Secret-Scanner.
- Rufen Sie Ihren "me"-Endpunkt auf und lesen Sie jedes zurückgegebene Feld.