可能重复:
将密码以纯文本形式存储在php变量或php常量中可以吗?
我曾经把我的数据库凭据存储在一个PHP文件中,如下所示:
<?php
define('HOST', 'localhost');
define('USER', 'db_user');
define('PASS', 'user_pass');
define('DB', 'database');
?>
我使用常量,但在最近的一个项目中,一位PHP程序员说,将数据库凭据存储到常量中是不安全的。我不明白。我试图找到一些信息,但没有人对此说什么。
将数据库凭据存储到PHP常量中是否存在安全风险?
唯一的风险是如果您在文档根下有定义。在这种情况下,如果您的服务器配置出现问题,并且人们可以看到您的PHP代码,则常量(以及数据库凭据)将被公开。
据我所知,最安全的方法是将凭据作为服务器环境的一部分,仅限于root用户。然后,开发人员可以使用_SERVER['db_user']
等。这可能更安全,因为有权访问实际DB凭据的人更受限制。它还为您提供了根据服务器使用不同凭据的灵活性(例如,开发与生产)。但是,您可以使用phpinfo()
、var_dump($_SERVER)
等查看所有服务器环境变量,因此您必须注意不要上传此类内容。
将数据库凭据存储到PHP常量中是否存在安全风险?
存储重要信息(如数据库的用户名和密码)总是有一些风险。
但我无法想象,使用常量比使用变量更具安全风险。
然而,一个潜在的风险是,配置是用代码编写的。所以它并不是静态的。使用不需要自己执行的配置文件可能更安全。