Jak się ukryć.hasła env w Laravel output?
Jak mogę ukryć moje hasła i inne wrażliwe zmienne środowiskowe na ekranie w wyjściu Laravela?
Czasami inni ludzie patrzą na moje prace rozwojowe. Nie chcę, aby widzieli te sekrety, jeśli zostanie wyrzucony wyjątek, ale nie chcę też przełączać włączania i wyłączania debugowania lub obracania dedykowanej strony dla szybkiego podglądu.
4 answers
Od wersji Laravel 5.5.13 istnieje nowa funkcja , która pozwala na czarną listę pewnych zmiennych w config/app.php
pod kluczem debug_blacklist
. Gdy zostanie wyrzucony wyjątek, whoops zamaskuje te wartości gwiazdkami *
dla każdego znaku.
Na przykład, biorąc pod uwagę to config/app.php
return [
// ...
'debug_blacklist' => [
'_ENV' => [
'APP_KEY',
'DB_PASSWORD',
'REDIS_PASSWORD',
'MAIL_PASSWORD',
'PUSHER_APP_KEY',
'PUSHER_APP_SECRET',
],
'_SERVER' => [
'APP_KEY',
'DB_PASSWORD',
'REDIS_PASSWORD',
'MAIL_PASSWORD',
'PUSHER_APP_KEY',
'PUSHER_APP_SECRET',
],
'_POST' => [
'password',
],
],
];
Wyniki w tym wyjściu:
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-12-30 03:53:14
Po pierwsze, love the solution autorstwa Jeffa above.
Po drugie, jeśli tak jak ja chcesz ukryć wszystkie env variables
podczas gdy nadal używasz UPS, oto rozwiązanie:
'debug_blacklist' => [
'_COOKIE' => array_keys($_COOKIE),
'_SERVER' => array_keys($_SERVER),
'_ENV' => array_keys($_ENV),
],
Wyjście:
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-12-06 00:46:00
Dzięki Jeff i Raheel za pomoc, ale właśnie znalazłem trochę gotcha:
Nawet jeśli wyczyszczę wszystkie klucze środowiskowe z _ENV
, te same klucze są nadal wyświetlane przez zmienne _SERVER
.
Dodanie poniższego kodu w config/app.php
ukryłoby wszystkie zmienne środowiskowe ze strony whoops:
'debug_blacklist' => [
'_SERVER' => array_keys($_ENV),
'_ENV' => array_keys($_ENV),
],
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-08-09 06:27:07
Laravel 5.6 nie działa dla mnie. ale to działa:
$envKeys = [];
$serverKeys = [];
$cookieKeys = [];
foreach ( $_ENV as $key => $value ) { if(is_string($value)) $envKeys[] = $key; }
foreach ( $_SERVER as $key => $value ) { if(is_string($value)) $serverKeys[] = $key; }
foreach ( $_COOKIE as $key => $value ) { if(is_string($value)) $cookieKeys[] = $key; }
return [
// ...
'debug_blacklist' => [
'_COOKIE' => $cookieKeys,
'_SERVER' => $serverKeys,
'_ENV' => $envKeys,
],
];
Byłbym wdzięczny za lepsze rozwiązanie.Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-08-09 22:21:30