连接到 MySQL 数据库的安全方式


Secure way to connect to a MySQL database

我正在为一小群人(50-60)管理一个网站。该网站具有简单的登录,所有用户数据存储在MySQL数据库中,该网站由一家著名的网络酒店托管。

我现在连接到数据库的方式是通过单个用户帐户,在数据库中指定具有读取和更改权限,以确保每个用户都可以更改自己的密码。脚本 (mysql_conn.php) 包含在所需的页面中,如下所示:

$server = "server_name";
$username_sql = "user@servername"; // This format is specific for that webhotel
$password_sql = "A_strong_password";    // Hard coded in the file
$conn = mysql_connect($server, $username_sql, $password_sql);
$db = mysql_select_db("user_list", $conn);
mysql_query("SET NAMES Utf8");
if(!$db) {
    echo "Error message";
exit();
}

从技术上讲,它就像一个魅力,但我不确定这是最好的方法,尤其是使用密码。另外,我应该在每个页面的末尾包含某种数据库断开连接吗?

首先,不建议对新代码使用 mysql_*,请参阅 PHP 简介 ot MySQL如果可能,请考虑改用 PDO。

其次,在PHP中

存储密码是非常安全的,甚至比将其保存在xml或ini等纯文本中更安全,除非您的Web服务器出现故障并且无法提供PHP页面,否则直接运行PHP脚本(或通过Web浏览器访问它)将永远不会暴露密码(与xml/ini文件相反)。

考虑将密码存储在某个无法从 Web 浏览器访问的配置中.php即在公共根目录上方的某个地方)。

唯一可能劫持密码的情况是当您的Web服务器被黑客入侵时,但是在这种情况下,无论您如何保存密码(除非密码已加密),它都会被劫持。

请注意,如果您决定切换到PDO,PDO如果连接失败,则会抛出PDOException,以防php配置为显示错误,则会泄露您的密码。请参阅相关错误。所以要谨慎使用!

祝你好运:)

我会将登录数据外包到一个名为"dbConnection.inc.php"的文件中,并将其存储在无法从外部访问的目录中。

在极端情况下,您的提供商可能会.php页面以纯文本形式提供。如果发生这种情况,访问者可能会看到您的密码。但是,如果它被外包,你会阻止它...