Security my.env中的变量显示在错误页上

Security my.env中的变量显示在错误页上,security,lumen,Security,Lumen,我刚开始使用laravel的lumen,并设法使其在本地和服务器上工作,当我即将开始探索它时,我的index.php包含以下内容: $app = require __DIR__."/../lumenTest/bootstrap/app.php"; $app->run($app->make('request')); echo $myundefinedvariable; 它显示一个ErrorException:Undefined variable:MyUndefined variabl

我刚开始使用laravel的lumen,并设法使其在本地和服务器上工作,当我即将开始探索它时,我的index.php包含以下内容:

$app = require __DIR__."/../lumenTest/bootstrap/app.php";
$app->run($app->make('request'));
echo $myundefinedvariable;
它显示一个ErrorException:Undefined variable:MyUndefined variable,但在“…at Application->Laravel\Lumen\Concerns{Close}”窗口中,我可以看到一堵巨大的文本墙,上面有如下内容:

... 'APP_KEY' => 'fake0BqKgHeC72EmT7039B6pDCsJ90key' , ...,  'DB_PASSWORD' => 'secret', ...
我的第一个想法是,可能是因为我用XAMPP或其他什么工具在本地运行它,所以我在服务器上尝试了它,同样的事情发生了

在执行任何php错误后,my.env文件中的敏感数据会显示给所有人,这正常吗?

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

其他信息:

  • PHP版本7.1.12
  • 流明(5.6.1)(拉维组件5.6.*)
  • 目录“lumenTest”比我的
    www
    public
    高一级,并且有.env所在的位置,站点位于Linux服务器共享主机上

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

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


如果在调试模式已设置为false时发生这种情况,则需要在服务器级别配置错误的隐藏/记录

不,这不正常。专业开发人员认为这是一种行为主义行为。这就是为什么公司甚至不考虑使用LaaVel.T/P>的确切原因。 很多人(包括我)已经通知他们,这确实没有完成,但开发人员似乎并不在意。事实上,它是世界上唯一一个认为可以在调试页面中打印关键信息的框架。当然,访问者不应该看到堆栈跟踪、sql查询、代码片段。。。但是环境变量是保密的,永远不应该出现在HTTP响应中

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

另一方面,如果您确实决定使用Laravel,则有一个软件包可以解决此问题: 安装起来非常简单,只需确保不要忘记应用程序->扩展指令。 在生产服务器上,您不能运行“composer安装”,而必须运行“composer安装--无开发”。这样,filp/whoops将(希望如此)不会被安装,也不会被触发

对于专业发展,我当然建议不要使用Laravel,因为他们认为可以接受的标准似乎很低

作为旁注:开发人员声称当APP_DEBUG=false时不会出错,但过去的事件表明,当禁用调试模式时,可以触发whoops处理程序

可能重复的