F A Q

К А Л Ь К У Л Я Т О Р

С помощью данного инструмента Вы сможете определить расходы на создание сайта.

Получите информацию по каждому виду работ и их стоимость.

  

Вы здесь: Статьи / Безопасность сайтов на Joomla! Перенос файла configuration.php

Безопасность сайтов на Joomla!
Перенос файла configuration.php

Безопасность сайтов является очень важным направлением. Сайт - это ресурс, который, по определению, доступен всем, а среди посетителей могут оказаться недобросовестные конкуренты или просто недоброжелатели, которые захотят его захватить, взломать или просто испортить. Одним из уязвимых мест в сайтах, работающих на CMS Joomla! является конфигурационный файл configuration.php, изначально хранящийся в корне сайта. Он содержит в себе информацию о базе данных сайта, логин и пароль от нее, а также настройки почты с логином и паролем и множество другой информации.

Для защиты данного файла рекомендуется переместить его из каталога сайта в родительскую папку. Таким образом, даже получив доступ к папке сайта, configuration.php не удастся скачать. Для его переноса можно использовать два способа:

Первый заключается в подмене файла configuration.php фиктивным файлом с таким же именем. он должен включать в себя следующий код:

<?php require('JPATH_ROOT . '/../cfg'); ?> 

Исходный файл необходимо переименовать в cfg (как в данном примере, или дать ему любое другое имя, изменив приведенную здесь директиву включения) и поместить в родительскую папку.

Второй способ: вообще убрать из корневой директории файл configuration.php. Для этого необходимо внести изменения в четыре файла:

  1. includes/defines.php
  2. includes/framework.php
  3. administrator/includes/defines.php
  4. administrator/includes/framework.php

В файле defines.php, как в основной includes, так и в administrator/includes/, нужно заменить директиву define('JPATH_CONFIGURATION', JPATH_ROOT); на define('JPATH_CONFIGURATION', JPATH_ROOT . '/..'); Это изменит место нахождения файла настроек Joomla! с папки сайта на родительскую папку.

Далее в файле includes/framework.php необходимо сделать два изменения: во-первых, заменить директиву require_once JPATH_CONFIGURATION.'/configuration.php'; на require_once JPATH_CONFIGURATION.'/cfg';, где cfg - имя, которое вы присваиваете конфигурационному файлу. В том же файле необходимо закомментировать блок:

if( !file_exists( JPATH_CONFIGURATION.'/configuration.php' ) || ( filesize(JPATH_CONFIGURATION.'/configuration.php' ) < 10 ) || file_exists(JPATH_INSTALLATION.'/index.php' ) ){

if (file_exists(JPATH_INSTALLATION.'/index.php')) {

header('Location: '.substr($_SERVER['REQUEST_URI'], 0, strpos($_SERVER['REQUEST_URI'], 'index.php')).'installation/index.php');

exit();

}

else {

echo 'No configuration file found and no installation code available. Exiting...';

exit();

}

}

Иначе из-за отсуствующего файла configuration.php Joomla! будет переходить в несуществующую папку installation и сайт работать не будет.

Далее похожие изменения необходимо сделать в файле administrator/includes/framework.php - заменить директиву включения configuration.php и закомментировать, либо стереть блок проверки его валидности и наличия.

После завершения редактирования и замены файлов на сервере, можно переименовать configuration.php (в примере cfg) и положить его в родительскую папку, убрав его из корневого раздела. Если все сделано правильно, сайт и административный раздел должны работать.