Где хранить учетные данные MySQL в скриптах PHP?

Я знаю, что мне нужно хранить мою регистрационную информацию за пределами моего веб-корня, если Apache взломан, но я не уверен, что такое «мой root», где хранятся мои данные для входа и как обращаться к ним с PHP.

Может ли кто-нибудь объяснить?

Solutions Collecting From Web of "Где хранить учетные данные MySQL в скриптах 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?

Это зависит от того, как кодируется ваша конфигурация.

 <?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'); ?> 

Также рекомендуется сохранять любой код обфускации пароля таким образом, чтобы ваш метод, динамическая соль и статическая соль не могли быть скомпрометированы аналогичным образом.

надеюсь, это поможет