Я знаю, что мне нужно хранить мою регистрационную информацию за пределами моего веб-корня, если Apache взломан, но я не уверен, что такое «мой root», где хранятся мои данные для входа и как обращаться к ним с PHP.
Может ли кто-нибудь объяснить?
Ваш веб-корень, который является $_SERVER['DOCUMENT_ROOT']
в PHP, представляет собой папку вашей файловой системы, на которую указывает ваш веб-сервер (в данном случае 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
.
Вы НЕ хотите хранить его в /home/some_user/public_html/config
(обратите внимание на public_html) или /var/www/webconfig
(обратите внимание, что это подпапка /var/www
)
Идея хранения данных вне вашего веб-корня заключается в том, что злоумышленник не может перейти на http://yoursite.com/config/mysql.txt
и получить ваши пароли. LFI и атаки на обход каталога не входят в сферу этой инициативы.
Вы также не должны проверять конфиденциальную информацию (учетные данные базы данных, ключи шифрования и т. Д.) В управлении версиями. Когда-либо.
Это зависит от того, как кодируется ваша конфигурация.
<?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'; ?>
Как правило, я использую папку вне моего веб-сайта для кода приложения (функции и т. Д.), Включая mysql connect php. Я создаю папку (/ home / user / application или подобное) и создаю там файл mysqlconnect.php с кодом для подключения к mysql или ошибкой. Затем убедитесь, что путь (/ home / user / application / находится в каталоге include и в верхней части index.php (index.html) включает:
<?php include('/home/user/application/mysqlconnect.php'); ?>
в<?php include('/home/user/application/mysqlconnect.php'); ?>
Также рекомендуется сохранять любой код обфускации пароля таким образом, чтобы ваш метод, динамическая соль и статическая соль не могли быть скомпрометированы аналогичным образом.
надеюсь, это поможет