在PHP常量和安全性中存储数据库凭据

时间:2012-01-30 16:21:10

标签: php database security

  

可能重复:
  Is it ever ok to store password in plain text in a php variable or php constant?

我曾经将我的数据库凭据存储在这样的PHP文件中:

<?php
    define('HOST', 'localhost');
    define('USER', 'db_user');
    define('PASS', 'user_pass');
    define('DB', 'database');
?>

我使用常量但是在最近的项目中,其中一个PHP编码器表示将数据库凭据存储到常量中并不安全。我不明白。我试图找到一些信息,但没有人对此有任何说法。

将数据库凭据存储到PHP常量中是否存在安全风险?

2 个答案:

答案 0 :(得分:1)

  

将数据库凭据存储到PHP常量中是否存在安全风险?

存储重要信息时存在一些风险,例如数据库的用户名和密码。

但我无法想象使用常量比使用变量更安全。

然而,潜在的风险是,配置是用代码编写的。所以它并不是一成不变的。使用配置文件可能更安全,而不需要自己执行。

答案 1 :(得分:1)

唯一的风险是,如果您在文档根目录下有定义。在这种情况下,如果您的服务器配置出现问题并且人们可以看到您的PHP代码,那么常量(以及数据库凭据)将被公开。

最安全的方式(我所知道的)是将凭据作为服务器环境的一部分,仅限于root。然后,开发人员可以使用_SERVER['db_user']等。这可能更安全,因为有权访问实际数据库凭据的人员更受限制。它还使您可以灵活地根据服务器使用不同的凭据(例如,开发与生产)。但是,您可以使用phpinfo()var_dump($_SERVER)等查看所有服务器环境变量,因此您必须注意不要上传此类内容。