如何保护项目中的数据库配置文件? [复制]
Posted
技术标签:
【中文标题】如何保护项目中的数据库配置文件? [复制]【英文标题】:How to secure database configuration file in project? [duplicate] 【发布时间】:2013-02-03 20:39:18 【问题描述】:我在 php 文件上创建了用于与数据库服务器建立连接。在这个文件中,我使用mysql_connect()
函数,参数为我的数据库服务器的主机、用户名和密码。
public class DatabaseConnect
function __construct()
mysql_connect('localhost','username','password') or die('Could not connect to mysql server.');
mysql_select_db('databasename');
现在在这种情况下,用户名和密码对其他人可见。
我找到了另一种方法来保护该值,即mysql.default_user
和mysql.default_password
。在什么情况下我们必须这样?
或者我怎样才能保护我的价值观不受他人影响?
【问题讨论】:
【参考方案1】:现在在这种情况下,其他人可以看到用户名和密码。
仅限那些有权访问您的源代码的人。这应该不是问题。但是,如果您想将代码和数据库凭据分开,请确保配置文件位于 Web 根目录之外。
【讨论】:
【参考方案2】:您可以尝试将数据库凭据放在具有适当 UNIX 权限集(例如 644)的单独文件中,然后将此文件包含在脚本之上。
configuration.php
文件如下所示:
<?php
define (DB_USER, "mysql_user");
define (DB_PASSWORD, "mysql_password");
define (DB_DATABASE, "database_name");
define (DB_HOST, "localhost");
?>
您的原始脚本将如下所示:
require ("configuration.php");
public class DatabaseConnect
function __construct()
mysql_connect(DB_HOST,DB_USER,DB_PASSWORD) or die('Could not connect to MySQL server.');
mysql_select_db(DB_DATABASE);
【讨论】:
刚刚在您的配置文件规范中使用了复制和粘贴(怪我;-))。必须在变量名周围添加引号才能使其工作。get_defined_constants()
可以很容易地将它们暴露给邪恶的开发者。以上是关于如何保护项目中的数据库配置文件? [复制]的主要内容,如果未能解决你的问题,请参考以下文章