Возможный дубликат:
Помещение основных классов выше корня сети – хорошая или плохая идея?
Я продолжаю читать, что лучше всего устанавливать учетные данные для подключения к MySQL (независимо от того, является ли это классом, определяет и т. Д.) За пределами корня веб-сайта (над папкой www).
Почему это? Если учетные данные находятся в файле .php, то не имеет значения, доступен ли файл через браузер, не так ли?
Это превентивная мера. Если кто-то случайно отключает оценку php на вашем сервере apache или изменяет параметр apache в файле .htaccess, файл может быть подан как обычный текстовый файл. Или, если вы случайно забыли тег начала php, он будет обновляться, как обычный текст. Не то, чтобы вы сделали такую тупую ошибку, но, возможно, будущий новичок, работающий над вашим кодом, может ошибаться.
Зачем оставлять возможный вектор открытым, когда вы можете помешать ему когда-либо быть возможным? Просто возьмите совет других, которые застрелили собственную ногу (или, как я, стреляли обеими ногами и рукой) и переводили учетные данные за пределы вашего докрова.
Потому что в определенной степени ничто под корнем сети не защищено. Он доступен в Интернете, что делает его по своей сути небезопасным.
Всегда существует вероятность того, что неправильно сконфигурированный сервер может в один прекрасный день вывести содержимое любого файла PHP, а не отправлять его на PHP для интерпретации. Есть также слишком много людей, пытающихся попасть в вашу базу данных так, как они могут … некоторые из них просто для удовольствия.
В любой конкретной ситуации вы всегда должны использовать наиболее безопасные методы. Это хорошая привычка.
Кроме того, вы никогда не должны использовать пароль root в своем веб-приложении. Создайте специального пользователя с минимальными привилегиями.
Для PHP я всегда использую файл .ini
для хранения конфиденциальных конфигураций …
<?php $config = parse_ini_file('../config.ini'); ?>
Потому что то, что находится внутри www
каталога (т. Е. Корень вашего сайта), может быть потенциально доступно из Интернета.
Это означает, что если вы разместите свои учетные данные здесь, возможно, кто-то сможет получить к ним доступ и напрямую подключиться к вашей БД.
Помещение ваших учетных данных за пределы этого каталога гарантирует, что он не будет доступен таким образом.