php - ¿Cómo ocultar las contraseñas.env en la salida de Laravel whoops?
environment-variables secret-key (5)
En primer lugar, ama la solución por Jeff arriba.
En segundo lugar, si, como yo, quieres ocultar todas las env variables
mientras todavía usas whoops, aquí hay una solución:
''debug_blacklist'' => [
''_COOKIE'' => array_keys($_COOKIE),
''_SERVER'' => array_keys($_SERVER),
''_ENV'' => array_keys($_ENV),
],
Salida:
¿Cómo puedo ocultar mis contraseñas y otras variables de entorno sensibles en la pantalla en la salida de Laravel''s whoops?
A veces otras personas están mirando mi trabajo de desarrollo. No quiero que vean estos secretos si se lanza una excepción, pero tampoco quiero tener que activar y desactivar la depuración, o girar un sitio dedicado solo para una vista previa rápida.
Gracias a Jeff y Raheel por ayudarnos, pero acabo de encontrar un poco de atención:
Incluso si _ENV
todas las claves de entorno de _ENV
, las mismas claves aún están expuestas a través de las variables _SERVER
listadas.
Agregar el siguiente código en config/app.php
ocultaría todas las variables de entorno de la página whoops:
''debug_blacklist'' => [
''_SERVER'' => array_keys($_ENV),
''_ENV'' => array_keys($_ENV),
],
He hecho un package para resolver este problema.
Solo instálalo usando
composer require glaivepro/hidevara
La mayoría del servidor y todas las variables env serán eliminadas. Cualquier campo parecido a una contraseña en $_POST
tendrá sus valores ocultos.
También puede personalizarlo tanto en la lista negra como en el enfoque de la lista blanca para mostrar / ofuscar / eliminar campos como desee.
Laravel 5.6 no funciona para mi. pero esto funciona:
$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,
],
];
Estaría agradecido por una mejor solución.
A partir de Laravel 5.5.13, hay una nueva característica que le permite poner en la lista negra ciertas variables en config/app.php
bajo la clave debug_blacklist
. Cuando se lanza una excepción, Whoops enmascara estos valores con asteriscos *
para cada personaje.
Por ejemplo, dada esta 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'',
],
],
];
Resultados en esta salida: