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.

UPS output screenshot with passwords showed

Author: Jeff Puckett, 2017-09-25

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:

strona wyjątku whoops

 41
Author: Jeff Puckett,
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:

Tutaj wpisz opis obrazka

 21
Author: Raheel Hasan,
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),        
],
 0
Author: erlangsec,
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.
 0
Author: Ohne Not Silas,
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