php用户名,密码编码和安全问题

时间:2013-08-25 04:29:51

标签: php mysql

我最近学习了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());
}

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

3 个答案:

答案 0 :(得分:2)

您存储密码的方式是唯一的方法。您需要确保PHP文件存储在服务器中没有人可以访问的位置。如何执行此操作取决于您正在运行的服务器,它们的设置方式各不相同。

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

其他一些你做错的事情:

最重要的是:不会在数据库中存储秘密数据。必须使用强大的行业标准算法对密码或信用卡数据进行散列或加密。如果你不知道如何正确地做到这一点,那么请问这里。

假设黑客有时会获得对所有服务器的完全访问权限,这是一种行业标准安全实践。您需要设计数据库,使得获取访问权限的黑客不是完全灾难。加密数据是实现这一目标的唯一方法,而那些未能做到这一点的公司最终总会在脚踝周围穿上裤子。

答案 1 :(得分:1)

您必须在源中拥有您的db用户名和密码。你怎么会连接到数据库?因此,关键不在于如何保护您的用户名和密码,而是如何保护您的源文件。你在这里展示了你的凭据,这是一个糟糕的开始。

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

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

答案 2 :(得分:1)

  
    

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

  

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

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

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

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