如何避免硬编码数据库连接密码?

时间:2016-02-02 15:00:01

标签: php database password-protection

我正在开展一个学校项目(写一个网站),我遇到了为我们的数据库连接提供密码的问题。由于我们的开源许可证,我们必须发布源代码,但这意味着每个人都可以连接到数据库并查看数据。

目前我们的连接(一个php文件)如下所示:

$host="************";
$password="************";
$this->conn = new mysqli($host, $user, $password, $dbname).mysqli_connect_error());

现在我的问题是:如何在不需要写$password=...的情况下提供连接数据库的密码?

2 个答案:

答案 0 :(得分:5)

好的,这是 ini 文件中的那个:

xxx.php

<?php

    $db_params = parse_ini_file( dirname(__FILE__).'/db_params.ini', false );

    // .....

    $this->conn = new mysqli($db_params['host'], $db_params['user'], $db_params['password'], $db_params['dbname'], $db_params['port'], $db_params['socket']).mysqli_connect_error());

    // ...

?>

db_params.ini

host=mysql.example.com
port=3306
socket=
user=testuser
password=myPasswort
dbname=myDatabase

答案 1 :(得分:1)

使用单个文件包含配置变量,并在共享代码时排除此文件。

例如:

require_once('config.php');
$this->conn = new mysqli($config['db']['host'], $config['db']['user'], $config['db']['pass'], $config['db']['dbname']);

config.php文件包括:

$config['db']['username'] = 'user';
$config['db']['password'] = 'pass';
...

你可以/应该扩展它以包括主机,端口,数据库名称等。