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

sha*_*ane 3 php mysql apache security webserver

我知道我需要将我的登录信息存储在我的Web根目录之外以防Apache崩溃,但我不确定我的"web root"是什么,在哪里存储我的登录信息,以及如何从PHP访问它们.

有人能解释一下吗

Sco*_*ski 7

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

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

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

应该说类似的东西,/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';
?>
Run Code Online (Sandbox Code Playgroud)