在PHP脚本中存储MySQL凭据的位置?

时间:2014-07-16 18:20:39

标签: php mysql apache security webserver

我知道我需要将我的登录信息存储在我的网络根目录之外,以防Apache被破解,但我不确定我的网络根目录是什么'是,在哪里存储我的登录信息,以及如何从PHP访问它们。

有人可以解释一下吗?

2 个答案:

答案 0 :(得分:7)

您的网络根目录,即PHP中的$_SERVER['DOCUMENT_ROOT'],是您的网络服务器(在本例中为Apache)指向特定主机的文件系统上的文件夹。

例如,如果您将此代码放在index.php文件中并访问您的域名(或子域名),它将告诉您您的网络根目录。

    <?php
    header("Content-Type: text/plain;charset=UTF-8");
    die($_SERVER['DOCUMENT_ROOT']);
    ?>

应该说/home/some_user/public_html/var/www。在这种情况下,您希望创建一个不在此目录中的路径。

例如:/home/some_user/config/var/webconfig

NOT 希望将其存储在/home/some_user/public_html/config(请注意public_html)或/var/www/webconfig(请注意这是{{}的子文件夹1}})

将数据存储在Web根目录之外的想法是,攻击者无法导航到/var/www并获取您的密码。 LFI和目录遍历攻击不属于该计划的范围。

您也不应将任何敏感信息(数据库凭据,加密密钥等)检查到版本控制中。永远。

如何从PHP访问它们?

这取决于您的配置的编码方式。

http://yoursite.com/config/mysql.txt

答案 1 :(得分:2)

通常,我使用webroot外部的文件夹来获取应用程序代码(函数等),包括连接php的mysql。我创建一个文件夹(/ home / user / application或类似的)并在那里创建一个mysqlconnect.php文件,其中包含连接mysql或错误输出的代码。然后,确保路径(/ home / user / application /位于include目录中,并位于index.php(index.html)的顶部)包括:

<?php
include('/home/user/application/mysqlconnect.php');

?>

建议以这种方式存储任何密码混淆代码也是一个好建议,这样你的方法,动态盐和静态盐就不会以类似的方式受到损害。

希望有所帮助