Как спрятаться.пароли env в выводе Laravel whoops?

Как я могу скрыть мои пароли и другие конфиденциальные переменных на экране в выходной фреймворк Laravel по упс?

иногда другие люди смотрят на мою работу по развитию. Я не хочу, чтобы они видели эти секреты, если возникает исключение, но я также не хочу продолжать переключать отладку и выключать или разворачивать выделенный сайт только для быстрого просмотра.

whoops output screenshot with passwords shown

4 ответов


по состоянию на Laravel 5.5.13, есть новая функция это позволяет вам занести в черный список определенные переменные в 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


прежде всего, люблю решение Джеффа выше.

2nd, если, как я, вы хотите скрыть все env variables пока все еще используйте whoops, вот решение:

'debug_blacklist' => [
        '_COOKIE' => array_keys($_COOKIE),
        '_SERVER' => array_keys($_SERVER),
        '_ENV' => array_keys($_ENV),        
    ],

выход:

enter image description here


спасибо Джеффу и Рахилу за помощь, но я только что нашел немного gotcha:

даже если я очищу все ключи среды от _ENV, те же ключи по-прежнему отображаются через _SERVER переменные.

добавление кода ниже в config/app.php скроет все переменные среды со страницы whoops:

'debug_blacklist' => [
        '_SERVER' => array_keys($_ENV),
        '_ENV' => array_keys($_ENV),        
],

фреймворк 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,
    ],
];

Я был бы благодарен за лучшее решение.