Рассмотрен способ перемещения конфиденциальных файлов из папки public_html на примере файла configuration.php
Одна из проблем безопасности Joomla! – защита от прямого доступа из Интернета файлов, содержащие исполняемый код или конфиденциальные данные, которые размещены в папке public_html.
Существуют различные способы защиты таких файлов, но большинство из них не оптимальны. Многие пользователи и группы разработчиков, таких как Gallery2 и Apache.org настоятельно рекомендуем не размещать внутри папки public_html файлы, которые содержат конфиденциальные данные.
Следующий метод самый простой и элегантный способ защиты таких файлов, которые по каким-либо причинам, должны храниться в public_html.
В этом примере, мы защитим файл configuration.php, пожалуй, наиболее конфиденциальный файл любого сайта на Joomla!
Даже в том случае, когда веб-сервер по каким либо причинам (например, из за неправильной настройки) покажет содержимое PHP файлов, никто не сможет увидеть содержимое настоящего файла конфигурации.
Вот что нужно сделать:
1. Переместите configuration.php в безопасный каталог вне public_html, и переименуйте его (например joomla.conf)
2. Создайте новый configuration.php файл, содержащий только следующий код:
require( dirname( __FILE__ ) . '/../joomla.conf' );
3. Убедитесь в том, что новый configuration.php файл защищен от записи, что-бы его нельзя было изменить через интерфейс администратора.
4. Теперь, если вам необходимо изменить настройки конфигурации Joomla!, сделайте это вручную в файле joomla.conf. Это немного неудобно, но зато надёжно.
Важные замечания!
В приведенном выше примере кода не должно содержаться пустых строк или каких-либо знаков (включая пробелы), перед началом тега .
В ином случае Вы можете увидеть вот такие ошибки:
Warning: Cannot modify header information - headers already sent by (output started at
/home/xxxxx/public_html/configuration.php:2) in /home/xxxxx/public_html/index.php on line 250
Обратите внимание, что в приведенном выше коде отсутствует закрывающий тег ?>
Это сделано умышленно для того, чтобы любые строки в конце файл не интерпретировались как HTML, что приведет к ошибке.
Метод, при котором упускается закрывающий PHP тег, является признанным для предотвращения таких конфликтов.
Это работает, потому что PHP автоматически останавливает интерпретатор в конце каждого файла.
Закрывающий тег PHP нужно ставить в том случае, когда в одном и том же файле после PHP кода идет HTML код.