来自我的 .env 的变量显示错误

Variables from my .env are shown on error

我刚开始使用 laravel 的流明并设法让它在本地和服务器上工作,当我正要开始探索它时,我的 index.php 包括:

$app = require __DIR__."/../lumenTest/bootstrap/app.php";
$app->run($app->make('request'));
echo $myundefinedvariable;

显示 ErrorException: Undefined variable: myundefinedvariable,但在“...at Application->Laravel\Lumen\Concerns{closure}" window 我可以看到一堵巨大的文字墙,其中包含以下内容:

... 'APP_KEY' => 'fake0BqKgHeC72EmT7039B6pDCsJ90key' , ...,  'DB_PASSWORD' => 'secret', ...

我的第一个想法是,也许是因为我 运行 它在本地使用 XAMPP 之类的东西,所以我去服务器上尝试了一下,同样的事情发生了。

我的 .env 文件中的敏感数据在出现任何 php 错误后向所有人显示是否正常?

有没有办法避免这种情况的发生? (与没有任何 PHP 错误不同,因为我倾向于 很多 )。

附加信息:

是的,如果您启用了调试模式,则可以显示与错误相关的任何类型的数据。这肯定会包括调试时有用的敏感数据。

对于生产,您希望所有错误都被私下记录,而不是公开显示。因此,您需要在 .env 文件中使用 debug=false。

如果在调试模式已设置为 false 时发生这种情况,您将需要在服务器级别配置 hiding/logging 错误。

不,那不正常。专业开发人员认为这是一种业余行为。这就是公司甚至不考虑使用 Laravel.

的确切原因

很多人(包括我)已经通知他们这真的没有完成,但开发人员似乎并不关心。事实上,它是世界上唯一认为可以在调试页面中打印关键信息的框架。当然,访问者永远不应该看到堆栈跟踪、sql 查询、代码片段......但是环境变量是机密的,永远不应该在 HTTP 响应中结束。

我最好的建议是使用专业的 MVC 框架,如 ASP.net、codeigniter 或 yii,因为不知道 Laravel 开发人员也认为可以做什么...

另一方面,如果您确实决定使用 Laravel,那么有一个包可以解决这个问题:https://github.com/GlaivePro/Hidevara 它真的很容易设置,只要确保你不要忘记 app->extend 指令。 在生产服务器上,您不能 运行 "composer install" 而是 "composer instal --no-dev"。这样 filp/whoops 将(应该,希望)不会被安装并且不会被触发。

对于职业发展,我当然建议不要使用 Laravel,因为他们认为可接受的门槛似乎很低。

作为旁注:开发人员声称当 APP_DEBUG=false 时不会出错,但过去的事件表明,在禁用调试模式时可以触发 whoops 处理程序。 https://www.google.com/amp/s/blog.hacken.io/dangers-of-laravel-debug-mode-enabled%3fhs_amp=true