Php Symfony.env安全

Php Symfony.env安全,php,mysql,sql,symfony,symfony4,Php,Mysql,Sql,Symfony,Symfony4,我想保护我的symfony项目。 我在.env文件中看到了与数据库连接的行: DATABASE_URL=mysql://username:password@127.0.0.1:3306/my_db 我认为这是不安全的,因为用户名和密码都是透明的。 您能告诉我如何保护与数据库的连接,如何隐藏连接信息或如何将其安全化吗 诚恳地说,.env文件中没有什么不好的地方。这里有两篇关于:和的文档文章 只需确保只有publicdir可以从web访问即可 正如文档中所说,您可以使用linux环境变量在服务

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

DATABASE_URL=mysql://username:password@127.0.0.1:3306/my_db  
我认为这是不安全的,因为用户名和密码都是透明的。
您能告诉我如何保护与数据库的连接,如何隐藏连接信息或如何将其安全化吗


诚恳地说,
.env
文件中没有什么不好的地方。这里有两篇关于:和的文档文章

只需确保只有
public
dir
可以从web访问即可

正如文档中所说,您可以使用linux环境变量在服务器端定义环境变量。但这相当棘手。我可以帮助你。不过,若有人访问了你们的服务器文件,他就可以利用这个函数窃取你们的数据库密码。我不确定这种方法是否更安全

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


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

如果您的
.env
文件无法通过web访问,则可以按原样存储数据。您的web服务器应设置为将公共子目录作为根目录处理,因此,任何人都不能从web访问.env文件。除此之外,还应通过服务器环境变量(取决于使用的Web服务器)定义.env文件中的数据,这将进一步减少攻击面。.env文件存在的原因可能不充分(主要是bin/console可用性)@Jakumi您能举个例子说明如何使用服务器环境变量配置.env文件吗?@Frank B-例如在PHP-FPM pool config中定义它们(参见文件底部)-这一切取决于您的系统以及您对服务器的访问是否良好/受限。(文本包含所有必要信息)