Источник: официальный сайт CMS Joomla! (joomla.org)

 

Почти все файлы PHP в CMS Joomla начинаются со следующей строки:

defined('_JEXEC') or die('Restricted access');

Этот оператор проверяет, вызывается ли файл из Joomla session и защищает ваш сайт, делая его более трудным для взлома.

Это работает в двух основных направлениях:

  1. Предотвращение ошибки при запуске php-файла, который, как ожидается, будет работать внутри joomla bootstrap и предотвращает раскрытие уязвимостей, возникающих из-за фатальных ошибок.
  2. Предотвращение случайных инъекций переменных через атаку регистра globals, которая обманывает файл PHP, думая, что он находится внутри приложения, когда этот файл таковым не является.

 Обратите внимание, что эта строка не должна быть включена в ваш основной файл index.php, так как это файл, который запускает сесию Joomla.

_JEXEC является константой, которая обычно определяется в файле index.php, находящегося в корне сайта (CMS) и используется для установки безопасной точки входа на сайт. Вышеуказанное выражение, если переводить дословно, выглядит так:

Определить константу _JEXEC или «умереть»,

т.е. «прекратить дальнейший доступ к файлу».

Данное выражение должно быть добавлено к файлам, которые при обращении непосредственно вызывают экспозицию пути. Например, следующее сообщение об ошибке возникает при обращении к системному плагину /plugins/system/backlink.php если проверка константы _JEXEC отключена:

Fatal error: Call to undefined function jimport() in /Users/pasamio/Sites/workspace/joomla_15/plugins/system/backlink.php on line 18

что можно перевести как

Неустранимая ошибка: вызов неопределенной функции jimport () в /Users / pasamio / Sites / workspace / joomla_15 / plugins / system / backlink.php в линии 18

Как видно, функции 'jimport' не существует и когда файл вызывается напрямую, PHP вызывает ошибку и открывает путь к файлу. При добавлении в этот файл  проверки константы _JEXEC при обращении к файлу будет отображаться сообщение "ограниченный доступ ".

Некоторые файлы не нужно защищать от этой проверки. Они могут быть файлами без внешних зависимостей, или они могут быть внешними файлами, которые могут работать, не будучи внутри CMS; например, генератор Gzip'D Javascript TinyMCE, который полностью автономен.

 

 

Добавлять комментарии и ответы могут только пользователи, прошедшие регистрацию!
Зарегистрируйтесь и напишите своё мнение или ответ!