1

我正在为一小部分人(50-60 岁)管理一个网站。该网站有一个简单的登录,所有用户数据都存储在 MySQL 数据库中,并且该网站由著名的 webhotel 托管。

我现在连接数据库的方式是通过单个用户帐户,在数据库中指定具有读取和更改权限,以确保每个用户都可以更改自己的密码。脚本 (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();
}

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

4

2 回答 2

3

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

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

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

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

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

祝你好运 :)

于 2012-06-07T09:44:16.550 回答
1

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

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

于 2012-06-07T09:37:07.377 回答