一尘不染

如何使我的数据库连接安全?

mysql

我目前正在为我教会的大学团体使用一个网站,并且开始对我所写内容的安全性有些担心。例如,我使用以下功能:

function dbConnect() 
  {
  global $dbcon;

  $dbInfo['server'] = "localhost";
  $dbInfo['database'] = "users";
  $dbInfo['username'] = "root";
  $dbInfo['password'] = "password";

  $con = "mysql:host=" . $dbInfo['server'] . "; dbname=" . $dbInfo['database'];
  $dbcon = new PDO($con, $dbInfo['username'], $dbInfo['password']);
  $dbcon->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  $error = $dbcon->errorInfo();

  if($error[0] != "") 
    {
    print "<p>DATABASE CONNECTION ERROR:</p>";
    print_r($error);
    }
  }

每当我进行某种查询时就连接到数据库。我总是使用PDO准备好的语句来防止任何用户输入的SQL注入,并且我使用htmlspecialchars进行转义,然后再输出。我的问题是:
如何保护数据库的用户名和密码? 我不知道是否有人可以查看我的PHP文件的源,但如果可以,我只能想象我会被缠住。我该怎么办?


阅读 321

收藏
2020-05-17

共1个答案

一尘不染

您应该将数据库凭据放在文档根目录之外的文件中,这样,如果出现混乱,并且PHP未被显示给用户,则没人能看到您的密码。

看一下 这篇文章的主题
这篇文章的主题

解决方案很简单。将所有敏感数据放置在Web服务器文档根目录之外。现在,许多专家主张将大部分(如果不是全部)php代码放置在Web服务器文档根目录之外。由于Web服务器不受PHP的相同限制,因此您可以在与文档根目录相同的目录下创建目录,并将所有敏感数据和代码放在此处。

2020-05-17