-3

我最近学习了 PHP/MySQL,并试图从服务器 SQL 中获取一些内容并将它们放入我的 HTML

<div id="fetched_content">
    <!-- data from PHP connection comes here -->
</div>

现在我想问的是,谁能告诉我如何保护为连接提供的数据库的用户名和密码。

define("DB_SERVER", "localhost");
define("DB_USER", "user");
define("DB_PASS", "password");
define("DB_NAME", "widget_corp");
$connection = mysql_connect(DB_SERVER,DB_USER,DB_PASS);
if (!$connection) {
    die("Database connection failed: " . mysql_error());
} 

// 2. Select a database to use 
$db_select = mysql_select_db(DB_NAME,$connection);
if (!$db_select) {
    die("Database selection failed: " . mysql_error());
}

现在,如果我这样做,则源代码中的任何人都可以看到用户名、密码和表名。我该如何隐藏它们?

4

3 回答 3

2

您存储密码的方式是唯一的方法。您需要确保 PHP 文件存储在服务器中任何人都无法访问的位置。你如何做到这一点取决于你正在运行的服务器,它们的设置都不同。

您还应该确保外部 IP 地址不能使用 mysql 用户名和密码。除了运行 PHP 代码的计算机之外,应该无法从世界上的任何计算机连接到您的 MySQL 数据库(对于开发工作,请使用支持 SSH 隧道的 MySQL 客户端)。

你做错的其他一些事情:

最重要的是:不要在数据库中存储秘密数据。密码或信用卡数据之类的任何内容都必须使用强大的行业标准算法进行散列或加密。如果您不知道如何正确执行此操作,请在此处询问。

假设黑客偶尔会获得对您所有服务器的完全访问权限,这是一种行业标准的安全做法。您需要以这样一种方式设计您的数据库,即黑客获得访问权限并不是一场彻底的灾难。加密数据是实现这一目标的唯一方法,而未能做到这一点的公司最终总是会被裤子缠在脚踝上。

于 2013-08-25T04:42:50.233 回答
1

您必须在源中有您的数据库用户名和密码。你还会如何连接到数据库?所以,关键不是如何保护您的用户名和密码,而是如何保护您的源文件。您在此处显示您的凭据是一个糟糕的开始。

您可以使用一些加密,从其他地方加载凭据等...但是任何有权访问您的源文件的人都将能够找到/跟踪/解密用户名和密码。

但是 PHP 只负责渲染它的输出,而不是代码本身,所以只要你的服务器正常运行,你就安全了。我们都是这样做的。

于 2013-08-25T04:33:16.590 回答
1

现在,如果我这样做,用户和密码以及表名将对源选项中的每个人都可见

不不不。只要您的 PHP 与 Web 服务器配置得很好,您的 PHP 源代码将永远不会作为 HTML 源代码显示给用户。

以下部分将仅包含 PHP 生成的输出,而不是 PHP 源代码

<div id="fetched_content">
    <!-- data from PHP connection comes here -->
</div>

因此,您的数据库登录凭据仍然是安全的,除非有人闯入您的服务器然后查看您的源文件,但如果发生这种情况,无论您将登录信息存储在何处,都会发生这种情况。

于 2013-08-25T04:34:23.910 回答