最安全的地方存储mysql_connect的php值?

时间:2010-02-18 10:38:35

标签: php mysql security

是最安全的地方存储我将在mysql_connect中使用的值也是什么最安全的方法来调用这些变量会更好地使用require,include或其他东西?

谢谢:)

2 个答案:

答案 0 :(得分:7)

存储它的最佳位置IMO位于一个PHP文件中(无论您使用require还是include来获取它并不重要)在Web根目录之外,即无法在浏览器中直接访问

<?php

  $db_server = "xyz";
  $db_user = "def";
  $db_password = "abc";

?>

如果网络根目录外无法访问

@Yacoby在他的回答中写下了这一点。他从此删除了它,但绝对值得一提。

有些愚蠢的托管服务提供商不允许在Web根目录之外访问。在这种情况下,您将配置文件放在网站的目录中,并使用包含.htaccess的{​​{1}}文件对其进行保护。这适用于大多数托管包装。确保您测试它,在尝试访问该文件时应该得到Deny from All

答案 1 :(得分:1)

这就是我通常做的事情:

  • 设置项目,使网站成为项目的子文件夹。这样,您就可以在Web根文件夹之外拥有所有PHP类和配置文件。
  • 拥有一个包含数据库凭据数组的config.php文件。例如:
$databases = array(
      "read" => array("host" => "127.0.0.1", 
                      "user" => "read", 
                      "pword"=> "secret",
                      "dbase"=> "projectName"));
  • 扩展名为Database的PDO类(或创建一个新类),该类具有带一个参数的构造函数。
class Database extends PDO{
  function __construct($database){
    global $databases;
    $db = $databases[$database];
    parent::__construct("mysql:dbname=".$db['dbase'].";host=".$db['host'], 
                        $db['user'], $db['pword']);
  }
}

现在,您可以将数组键作为数据库类构造函数的参数传递给其中一个数据库凭据,然后它将使用这些详细信息登录。这意味着您可以让多个用户访问数据库(一个用于读取,一个用于写入)。