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

时间:2012-06-07 09:31:09

标签: php mysql

我正在为一小群人(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();
}

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

2 个答案:

答案 0 :(得分:3)

首先使用mysql_ *建议不要使用新代码,请参阅PHP Introduction ot MySQL 如果可能,请考虑切换到PDO。

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

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

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

如果您决定切换到PDO,PDO如果连接失败,则抛出PDOException,以防php配置为显示错误将解除您的密码。见The related bug。所以要谨慎使用它!

祝你好运:)

答案 1 :(得分:1)

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

在极端情况下,您的提供商可能会将.php页面作为纯文本提供。如果发生这种情况,访客可以看到您的密但如果它被打破了你就会阻止......