2012-06-11 67 views
3

我正在运行几个不同的PHP购物车,我们试图在版本控制下获取各种配置文件。到目前为止,我们刚刚在git中忽略了它们,因为我们不希望任何人都可以使用生产级密码。此外,我们大多数开发人员正在运行具有独特信息的本地安装。在Apache环境中配置变量变量

当谈话与我们有关该问题的系统管理员我突然想起,我们可以在Apache虚拟主机块设置环境变量和PHP访问它们,就像这样:

阿帕奇:SetEnv db_user "username"

PHP:<?php $config['db']['user'] = $_ENV['db_user'];

它看起来像没有问题,但我从来没有见过这样做之前完成。以这种方式处理身份验证信息是否有任何含义(技术,安全等)或限制?

+0

环境变量被广泛用于区分应用程序环境(例如生产与分期与开发);如果您对可以访问git存储库的用户不满意,我并不认为保留实际的数据库证书的缺点,但在此处查看更多答案很有意思。你应该在这种情况下使用'$ _ENV'而不是'$ _SERVER'。 – lanzz

+0

你说得对,@lanzz,$ _ENV是访问我想要的数据的更好方式。谢谢! –

+0

Heroku使用这种方法开箱即用Facebook应用程序(存储应用程序ID和密钥)。它还使您的代码更具可移植性,因为您的重要细节未经您的源代码处理。 – rbaker86

回答

2

这非常接近于the PHP Security Guide: Databases and SQL中提出的内容。

他们指出,一个潜在的问题是通过调用“像phpinfo()或print_r($ _ SERVER)”这样的东西来暴露变量的风险。所以问题是你是否可以控制这种风险 - 以及你是否相信每个能够访问该虚拟主机的人(在你的上下文中,答案可能是“是”)。

他们还建议通过将这些凭证放入只能由根读取的文件中来增加额外的重定向级别 - 如果在开发环境中稍微偏执,这在部署中似乎是合理的。

+0

建立连接后,您可能(也可能应该)取消环境变量,并且不再需要凭据。 – lanzz