【问题标题】:Symfony .env securitySymfony .env 安全性
【发布时间】:2020-04-20 02:32:26
【问题描述】:

我想保护我的 symfony 项目。
我在我的 .env 文件中看到了与数据库连接的行:

DATABASE_URL=mysql://username:password@127.0.0.1:3306/my_db  

我认为它不安全,因为用户名和密码是明确的。
您能否告诉我如何保护与数据库的连接以及如何隐藏连接信息或如何保护它们?

真诚的

【问题讨论】:

  • 如果您的 .env 文件无法通过网络访问 - 可以按原样存储数据。
  • 您的网络服务器应设置为以 root 身份处理公共子目录,因此从网络上,任何人都应该无法访问 .env 文件。除此之外,您应该通过服务器环境变量定义 .env 文件中的数据(取决于使用的网络服务器),这将进一步减少攻击面。 .env 文件存在的原因可能很弱(主要是 bin/console 可用性)
  • @Jakumi 能否举例说明如何使用服务器环境变量配置 .env 文件?
  • @Frank B - 例如在 PHP-FPM 池配置中定义它们(参见文件底部) - 这完全取决于您的系统以及您对服务器的访问有多好/限制。
  • codereviewvideos.com/course/symfony-deployment/video/…(文本包含所有必要信息)

标签: php mysql sql symfony symfony4


【解决方案1】:

.env 文件中没有任何问题。这里有两篇关于:configuring environment variables in productionconfigure environment variables during deploy 的文档文章。

只需确保只有public dir 可以从网络访问。

正如文档中所说,您可以使用 linux 环境变量在服务器端定义环境变量。但这很棘手。 This answerthis answer 可以帮助您。尽管如此,如果有人可以访问您的服务器文件,他可以使用getenv 函数窃取您的数据库密码。我不确定这种方法是否更安全。

我认为关键是 CI/CD 脚本。您不得在您的存储库中保留生产 .env 文件。相反,您应该在部署过程中添加此文件。环境变量必须存储在安全的地方,例如我使用gitlab's environment variables storage 并创建.env 文件during deploy

同时检查您的database privileges。可能这是将密码丢失到数据库的危害降到最低的最佳方法。

【讨论】:

    猜你喜欢
    • 2019-08-13
    • 1970-01-01
    • 2021-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多