存储msql_connect的php值的最安全位置是什么?

4

哪里是存储将用于 mysql_connect 的值的最安全的地方?另外,调用这些变量的最安全方式是使用 require、include 还是其他什么方式?

谢谢 :)

2个回答

7

我认为最好的存储位置是在一个PHP文件中(无论您使用require还是include来获取它都没有关系),放在Web根目录之外,即不能直接在浏览器中访问。

<?php

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

?>

如果没有访问web根目录之外的权限
@Yacoby在他的回答中写下了这个内容。尽管他已经删除了它,但它绝对值得一提。
有些愚蠢的主机提供商不允许访问web根目录之外的内容。在这种情况下,您可以将配置文件放在网站的一个目录中,并使用包含“Deny from All”的.htaccess文件来保护它。这适用于大多数托管套餐。但是请确保进行测试,尝试访问该文件时应该会收到“403 Forbidden”的错误提示。

1

这是我通常做的:

  • 将网站设置为项目的子文件夹,这样您可以将所有PHP类和配置文件放在Web根文件夹之外。
  • 有一个config.php文件,其中包含数据库凭据的数组。例如:
$databases = array(
      "read" => array("host" => "127.0.0.1", 
                      "user" => "read", 
                      "pword"=> "secret",
                      "dbase"=> "projectName"));
  • 扩展PDO类(或创建一个新类)称为Database,它具有一个参数的构造函数。
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']);
  }
}

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接