Как скрыть пароли.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,
    ],
];

Я был бы признателен за лучшее решение.