如何保护项目中的数据库配置文件? [复制]

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_usermysql.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() 可以很容易地将它们暴露给邪恶的开发者。

以上是关于如何保护项目中的数据库配置文件? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何让 C# 项目使用自己的配置文件? [复制]

Linux部署项目简要记录只是步骤没有配图

mysql 主从复制

CoreData SQLite 保护

SQL Server中如何配置数据库邮件

Redis主从复制失败(master_link_status down)