RATGEBER · SICHERHEIT
.env und .git öffentlich erreichbar: so prüft und behebt ihr es
Können .env oder .git öffentlich abgerufen werden, sind Schlüssel und Quelltext offen. So prüft ihr es in einer Minute und behebt es.
2 Min. LesezeitZuletzt geprüft am
Warum das passiert
Hosting-Dienste veröffentlichen einen festgelegten Ordner. Netlify schreibt in der Doku, dass nur Dateien im Publish-Ordner ausgeliefert werden; bei Vercel wird nur der Inhalt des Output-Ordners statisch ausgeliefert. Liegt eine .env oder ein .git-Ordner in diesem Ordner, kann er mit veröffentlicht werden; ob er tatsächlich abrufbar ist, prüft ihr mit dem Selbsttest.
Selbsttest
Hängt an die Adresse eurer App /.env und /.git/config an und öffnet sie im Browser. Erwartet wird eine Fehlerseite („nicht gefunden“). Manche Apps liefern für unbekannte Adressen trotzdem die Startseite aus; entscheidend ist deshalb der Inhalt. Seht ihr Zeilen wie NAME=wert oder einen Abschnitt [core], ist die Datei öffentlich.
Beheben
Nehmt die Dateien aus dem Ordner, der ausgeliefert wird, und prüft nach dem nächsten Build erneut. Welcher Ordner ausgeliefert wird, steht in den Einstellungen eures Hostings (Publish- bzw. Output-Ordner).
Schlüssel rotieren
Stand ein Schlüssel in der .env, geht davon aus, dass er bekannt ist. Beseitigt zuerst die Ursache, legt dann einen neuen Schlüssel an, tauscht ihn überall aus und löscht den alten.
Was der Check dazu tut
Der kostenlose Check ruft diese Pfade passiv von außen ab und meldet, wenn dort echter Dateiinhalt liegt, nicht bloß eine Startseite als Ersatzantwort.
Typische Fehler
Diese Fehler ergeben sich aus den Doku-Seiten von Netlify und Vercel:
- Bei Netlify den Publish-Ordner auf das Hauptverzeichnis stellen. Er bezieht sich auf das Base-Verzeichnis, das standardmäßig das Hauptverzeichnis (
/) ist. Alles in diesem Ordner wird ausgeliefert, alles außerhalb nicht. - Bei Vercel ein Projekt ohne Build-Schritt mit dem Framework „Other“ anlegen. Dann liefert Vercel laut Doku den Ordner
publicaus, und wenn es ihn nicht gibt, das Hauptverzeichnis des Projekts. Legt die auszuliefernden Dateien deshalb in einen eigenen Ordner. - Den Ausgabeordner nicht kennen. Bei erkanntem Framework stellt Vercel ihn automatisch ein; ob er stimmt, seht ihr in den Build-Einstellungen des Projekts.
Beispiel: Selbsttest im Terminal
Statt im Browser könnt ihr die Antwort auch abfragen. Ersetzt die Adresse durch die eurer App. Erwartet wird der Status 404. Liefert die App für unbekannte Adressen ihre Startseite, steht dort 200; schaut dann in den Inhalt:
curl -s -w "\nStatus: %{http_code}\n" https://eure-app.example/.env
curl -s -w "\nStatus: %{http_code}\n" https://eure-app.example/.git/configHäufige Fragen
Ist meine .env automatisch öffentlich?
Nein. Sie ist nur erreichbar, wenn sie in dem Ordner liegt, den euer Hosting ausliefert: bei Netlify der Publish-Ordner, bei Vercel der Ausgabeordner.
Reicht es, die Datei zu löschen?
Nein. Geht davon aus, dass ein Schlüssel bekannt ist, wenn er einmal erreichbar war. Beseitigt die Ursache, legt einen neuen Schlüssel an, tauscht ihn überall aus und löscht dann den alten.
Warum bekomme ich Status 200, obwohl es die Datei nicht gibt?
Manche Apps liefern für unbekannte Adressen ihre Startseite aus. Entscheidend ist der Inhalt: Zeilen wie NAME=wert oder ein Abschnitt [core] bedeuten, dass die Datei öffentlich ist.
Was prüft der Check dazu?
Er ruft die Pfade passiv von außen ab und meldet nur, wenn dort echter Dateiinhalt liegt.
Quellen
Eure App prüfen
Der kostenlose Check lädt eure App wie ein Besucher und zeigt, was von außen sichtbar ist. Ihr bestätigt vorher, dass ihr die App verantwortet oder zur Prüfung befugt seid.