当您将调试设置为 false 时,如何在 Lumen 中隐藏 .env 密码?

Posted

技术标签:

【中文标题】当您将调试设置为 false 时,如何在 Lumen 中隐藏 .env 密码?【英文标题】:How to hide .env passwords in Lumen when you leave debug as false? 【发布时间】:2018-12-15 17:32:24 【问题描述】:

如何在 Lumen(不是 Laravel)的屏幕上隐藏我的密码和其他敏感环境变量?

有时我们在开发中忘记或测试 smth 并在 .env 文件中设置 debug=false。即使在开发阶段,我们也可能不希望其他人看到这些信息。

对于一些不知道这一点的人来说,如果在打开页面或发出请求时抛出异常,.env 文件中的所有内容都会显示在浏览器中,包括 db 密码等 - “而这个就是你调试的方式”!

我找到了 Laravel 的解决方案,但 Lumen 也需要它!

Laravel 解决方案:How to hide .env passwords in Laravel whoops output?

如果我们将这个作为 Laravel 团队的默认设置提供,那将是最好的,但在 Laracast 中进行了一些讨论后,我不太乐观!

我希望开发人员知道这个问题并非常小心,因为忘记它甚至在开发中测试它都有被黑客入侵的巨大风险!

谢谢!

【问题讨论】:

【参考方案1】:

您可以通过在config/app.php中添加以下代码来隐藏敏感信息

'debug_blacklist' => [
    '_ENV' => [
        'APP_KEY',
        'DB_PASSWORD',
    ],
    '_SERVER' => [
        'APP_KEY',
        'DB_PASSWORD',
    ],
    '_POST' => [
        'password',
    ],
],

【讨论】:

【参考方案2】:

2 个选项:

    不要安装开发依赖:composer install --no-dev 使用专业的 MVC 框架

【讨论】:

【参考方案3】:

您可以在ÈxceptionHandler 类中完全自定义调试输出。

这取决于您,您希望如何将异常转换为 json 响应

【讨论】:

我厌倦了一直听到“这取决于你”!那为什么要有框架呢?当 smth 成为标准时,它需要作为默认值提供!没有?

以上是关于当您将调试设置为 false 时,如何在 Lumen 中隐藏 .env 密码?的主要内容,如果未能解决你的问题,请参考以下文章

如何创建一个 div,它默认显示图片,但当您将鼠标悬停在它上面时会转换为一些文本细节?

增加内容大小时如何防止内容偏移

如何测试当您将应用更新发布到市场时会发生啥

当您将对象数组转换为字符串数组时,它叫啥?

如何在 VueJS DevTools 中使 Vuex “不可见”

设置 debug=false 实际上会导致渲染速度慢得多?