Wie verstecke ich .env-Passwörter in der Laravel-Whoops-Ausgabe?
Lesezeit: 6 Minuten
Wie kann ich meine Passwörter und andere sensible Umgebungsvariablen auf dem Bildschirm in der Whoops-Ausgabe von Laravel verbergen?
Manchmal schauen sich andere Leute meine Entwicklungsarbeit an. Ich möchte nicht, dass sie diese Geheimnisse sehen, wenn eine Ausnahme ausgelöst wird, aber ich möchte auch nicht ständig das Debuggen ein- und ausschalten oder eine dedizierte Website nur für eine schnelle Vorschau einrichten müssen.
Jeff Puckett
Ab Laravel 5.5.13können Sie Variablen zensieren, indem Sie sie unter dem Schlüssel auflisten debug_blacklist in config/app.php. Wenn eine Ausnahme ausgelöst wird, maskiert Whoops diese Werte mit Sternchen * für jeden Charakter.
In Anbetracht dessen beispielsweise config/app.php
Es könnte nützlich sein, eine Pull-Anfrage für die Laravel-Dokumente zu stellen
– Christophvh
25. September 2017 um 14:54 Uhr
@JeffPuckett Ah, du hast Recht, ich dachte fälschlicherweise, dass .13 niedriger als .4 ist, wie du es mit Dezimalstellen tun würdest
– ii7scw
5. Oktober 2017 um 20:33 Uhr
Gibt es einen Grund, warum dies in Laravel 5.7 nicht funktioniert? ich fand registerBlacklist innerhalb des WhoosHander unter Laravels Foundations, aber soweit ich das beurteilen kann, wird es nicht verwendet.
– Adam Patterson
17. Juni 2019 um 20:15 Uhr
Rahel Hasan
Lieben Sie zunächst die Lösung von Jeff oben.
Zweitens, wenn du wie ich alles verstecken willst env variables Während Sie immer noch Whoops verwenden, ist hier eine Lösung:
BEARBEITEN:
Der Legende nach bräuchte man seit Laravel 7x debug_hide Schlüssel statt
Danke dafür. Ich bin immer noch verwirrt, warum die Leute wollen, dass alle env-Variablen bei jedem Fehler auf dem Bildschirm gedruckt werden.
– warmer Whisky
14. Dezember 2017 um 5:24 Uhr
genau Mann … vielleicht sagen 10% würden es wollen … aber NICHT 90% der Laravel-Entwickler!
– Rahel Hasan
14. Dezember 2017 um 5:36 Uhr
Hört hört! Ich habe vor ein paar Monaten versehentlich meinen Mailgun-API-Schlüssel offengelegt, was dazu führte, dass über 1200 Phishing-E-Mails über mein Konto gingen. Schrecklich! Wenn ich jemals sehen muss, was in meinem Env ist, mache ich es auf die altmodische Art, indem ich das verdammte Ding öffne!
– warmer Whisky
14. Dezember 2017 um 5:44 Uhr
exakt!! Wenn ich meine env kennen muss, würde ich einfach die env-Datei öffnen und die env NICHT versehentlich auf einer Seite verfügbar machen, von der ich ungefähr eine Woche lang keine Ahnung habe
– Rahel Hasan
14. Dezember 2017 um 6:16 Uhr
Vielen Dank. Gute Antwort.
– Benutzer2094178
19. Dezember 2017 um 1:41 Uhr
Danke Jeff und Raheel für die Hilfe, aber ich habe gerade ein kleines Problem gefunden:
Auch wenn ich alle Environment Keys aus lösche _ENVdie gleichen Schlüssel werden NOCH durch die ausgesetzt _SERVER Variablen aufgeführt.
Fügen Sie den folgenden Code hinzu config/app.php würde alle Umgebungsvariablen von der Whoops-Seite ausblenden:
Und wie unterscheidet sich das von der Antwort von Raheel, abgesehen von der Cookie-Zeile in Ihrem Code? Oder hat er seine Antwort nach Ihrer bearbeitet?
– Marcel Cozma
28. September 2018 um 5:16 Uhr
Es gibt einen feinen, aber signifikanten Unterschied zwischen ‘_SERVER’ => array_keys($_SERVER) und ‘_SERVER’ => array_keys($_ENV).
– erlangsec
5. Oktober 2018 um 10:32 Uhr
Ich habe eine gemacht Paket um dieses Problem zu lösen.
Installieren Sie es einfach mit
composer require glaivepro/hidevara
Der größte Teil des Servers und alle Umgebungsvariablen werden entfernt. Alle passwortähnlichen Felder in $_POST werden ihre Werte verborgen haben.
Sie können es auch entweder im Blacklist- oder Whitelist-Ansatz anpassen, um Felder nach Belieben anzuzeigen / zu verschleiern / zu entfernen.
Die Lösung von @jeff + @raheel ist super!!! Bei einem Projekt haben wir kürzlich festgestellt, dass wir manchmal ein oder zwei Eigenschaften auf die Whitelist setzen wollten. Aufbauend auf dem oben Gesagten können Sie also bestimmte Eigenschaften, die Sie debuggen möchten, mit etwas wie dem folgenden auf die Whitelist setzen:
Ich möchte nur erwähnen, dass dies hinzugefügt werden kann app.php
– Jesse Orange
23. Juli 2019 um 12:13 Uhr
Jenis Patel
Normalerweise für die lokale Entwicklung sollten wir das einstellen APP_DEBUG Umgebungsvariable zu Stimmt. Damit wir bessere Einblicke in den Debugging-Fehler und die Warnungen haben.
Aber in der Produktionsumgebung sollte dieser Wert immer sein FALSCH. Wenn der Wert auf eingestellt ist Stimmt In der Produktion riskieren Sie, den Endbenutzern Ihrer Anwendung vertrauliche env-Passwörter preiszugeben.
Ab Laravel 5.5.x bietet auch eine Lösung dafür.
Sie müssen nur die hinzufügen debug_blacklist Option in Ihrer config/app.php Konfigurationsdatei. Nach dem Hinzufügen dieser Option wird Laravel dies tun schwarze Liste alle Schlüssel, die in erwähnt werden debug_blacklist Option mit Sternchen.
Sie können es auf zwei Arten verwenden:
Methode 1 – Setzen Sie ausgewählte ENV-Schlüssel und Kennwörter auf die schwarze Liste