在使用 PHP 连接到 MySQL 的教程中,您会看到类似于以下内容的内容。
$pdo = new PDO('mysql:host=localhost;dbname=mydb', 'myuser','mypassword');
我有一个在我的本地主机上以这种方式工作的连接,但是为了让它生效,你对密码做了什么?你只是把它作为纯文本留在你的php文件中吗?还是有更安全的方法来处理这个问题?
如果他们查看源代码,没有人可以看到您的连接字符串,只能通过查看您的原始代码才能看到。我还将它放在一个单独的文件中,并将该文件包含在您的页面上。如果您需要更改密码,这也很有帮助,因为您不必编辑使用连接的每个页面 - 您只需要编辑一个文件。
或者,您可以在包含文件中包含一个连接字符串,并将其放在文档根目录之外。这会阻止人们使用浏览器或攻击您的 FTP 访问此文件。这将有助于保护您的纯文本密码,但如果有人获得/有权访问您的本地目录,仍然可以访问。为此,您可能需要配置一个 PHP 配置变量 ,open_basedir
它允许您的脚本与根目录之外的文件通信。当然,这一切都取决于您是否可以访问根目录后面的文件夹,以及是否可以更改该配置变量。
除此之外,没有什么可以做的。
包含文件示例:
创建一个名为conn.php
并将您的连接存储在其中的文件。
$dbConn = mysql_connect($host, $user, $pass);
mysql_select_db("dbName", $dbConn);
在需要连接的页面上,包含 conn.php 文件,如下所示:
<?php
include("conn.php");
if (!dbConn) {
die('Sorry, our database did not load. Please try again later.');
exit();
}
$result = mysql_query("...");
?>
最终用户将永远无法看到 PHP 脚本中的文本。他们只看到代码输出的内容。您可以输入这样的密码,只要您从不执行以下操作:
$mySecretPassIs='TheBoogeyManCometh';
echo $mySecretPassIs;
话虽如此,将您的连接详细信息放入脚本中通常更容易,根据需要从各个页面包含它,然后离开。这样做的好处是,如果您更改密码等,您只需在一处更改,您可以将这些包含的文件保存在一个安全的地方。
真的没有办法解决它。只需将该行放在 mysql_connect.php 文件中即可include()
,因此它不在您的源页面上。
这样,即使有人在查看您的来源,密码也不会立即可用。
确保您的数据库权限仅允许该用户对数据库具有某些权限,因此即使密码被泄露,他们也只能修改该数据库中的内容。