Как скрыть пароли.env в выходе Laravel?
Как я могу скрыть свои пароли и другие чувствительные переменные среды на экране в выходе Laravel?
Иногда другие люди смотрят на мои разработки. Я не хочу, чтобы они увидели эти секреты, если выбрано исключение, но я также не хочу включать и отключать отладку или разворачивать выделенный сайт только для быстрого предварительного просмотра.
![whoops output screenshot with passwords shown]()
Ответы
Ответ 1
Начиная с Laravel 5.5.13, есть новая функция, которая позволяет вам config/app.php
в черный список определенные переменные в config/app.php
под ключевым debug_blacklist
. Когда генерируется исключение, whoops будет маскировать эти значения звездочками *
для каждого символа.
Например, учитывая эту 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',
],
],
];
Результаты в этом выпуске:
![whoops exception page]()
Ответ 2
Прежде всего, любите решение Джеффа выше.
Во-вторых, если я, как и я, вы хотите скрыть все env variables
пока используете крики, вот решение:
'debug_blacklist' => [
'_COOKIE' => array_keys($_COOKIE),
'_SERVER' => array_keys($_SERVER),
'_ENV' => array_keys($_ENV),
],
Выход:
![enter image description here]()
Ответ 3
Спасибо Джеффу и Рахилю за помощь, но я только что нашел немного:
Даже если я _ENV
все ключи среды от _ENV
, те же клавиши STILL отображаются через переменные _SERVER
перечисленные.
Добавление кода, приведенного ниже в config/app.php
, скроет все переменные среды на странице whoops:
'debug_blacklist' => [
'_SERVER' => array_keys($_ENV),
'_ENV' => array_keys($_ENV),
],
Ответ 4
Laravel 5.6 не работает для меня. но это работает:
$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,
],
];
Я был бы признателен за лучшее решение.