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

我知道我需要在我的web根目录以外存储我的login信息,以防Apache破解,但我不确定我的“web根目录”是什么,在哪里存储我的login信息,以及如何从PHP访问它们。

有人可以解释吗?

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

例如,如果你把这个代码放在你的index.php文件中,并访问你的域名(或子域名),它会告诉你你的web根目录。

  <?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

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

将数据存储在Web根目录之外的想法是,攻击者无法导航到http://yoursite.com/config/mysql.txt并获取您的密码。 LFI和目录遍历攻击不在本倡议的范围内。

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

如何从PHP访问它们?

这取决于你的配置是如何编码的。

 <?php $config = parse_ini_file('/home/some_user/config/mysql.ini'); // OR $config = json_decode('/home/some_user/config/mysql.json'); // OR require_once '/home/some_user/config/mysql_config.php'; ?> 

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

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

以这种方式存储任何密码混淆代码也是很好的建议,这样你的方法,动态盐和静态盐就不会以类似的方式被破坏。

希望有所帮助