Комментарии

Проверка среды выполнения
( 0 Голосов )
Итак, веб-сервер загрузил файл index.php из пользовательской части веб-сайта. Рассмотрим содержимое этого файла. В листинге ниже представлен фрагмент кода из первой части этого файла.
Начало файла index.php из пользовательской части веб-сайта
<?php
/**
 * @package Joomla.Site
 * @copyright Copyright (C) 2005 - 2012 Open Source Matters, Inc. All rights reserved.
 * @license GNU General Public License version 2 or later; see LICENSE.txt
 */
 
// Set flag that this is a parent file.
define('_JEXEC', 1);
Первая часть данного файла содержит комментарии и называется блоком документации (doc). Строки кода с этими комментариями присутствуют (и должны непременно быть) в каждом файле базового кода РНР, применяемом в Joomla. Дескриптор ©package обозначает имя файла пакета. Для файлов из пользовательской части веб-сайта обычно указывается имя Joomla. Site, а для файлов из административной части — имя Joomla. Administrator. В строках кода с дескрипторами @copyright и @license указываются одни и те же для каждого файла сведения об авторском праве и лицензионном соглашении.
 
Далее следует строка кода define('_JEXEC', 1);, имеющая очень большое значение. В ней определяется константа _JEXEC. В начале практически всех файлов исходного кода РНР, за исключением файла index.php из административной части, содержится строка кода defined('_JEXEC') or die;. В этой строке проверяется, определена ли константа _JEXEC, т.е. осуществляется ли вход в приложение из файла index.php.
 
Если кто-нибудь попытается выполнить файл исходного кода РНР непосредственно, т.е. вне приложения, константа _JEXEC окажется неопределенной, и файл не будет выполнен. Если же включить в состав приложения файл исходного кода РНР, в начале которого отсутствует упомянутая выше строка кода с определением данной константы, то кто-нибудь может попытаться ввести путь к этому файлу непосредственно в браузере. Как правило, если файл исходного кода РНР для Joomla выполняется за пределами системы CMS, появляется сообщение об ошибке в коде РНР (например, из-за того, что не определена константа или класс). В этом сообщении указывается полный путь к файлу исходного кода РНР. С точки зрения безопасности это представляет определенный риск, поскольку потенциальный нарушитель получает сведения о сервере и находящихся на нем папках.
 
Убедитесь в этом сами, удалив строку кода defined('_JEXEC') or die; из файла components/com_banners/banners.php. Затем введите в окне браузера следующий URL: http://мойсайт.ru/components/com_banners/banners.php. В итоге вы должны получить сообщение об ошибке.
 
Как вы видите, в сообщении об ошибке указан полный путь к установленным программным компонентам Joomla. Если вы восстановите удаленную строку кода с определением упомянутой выше константы и сделаете еще одну попытку, то получите в итоге пустой экран, не обнаруживающий на этот раз никаких сведений о вашем веб-сайте.
 

Понравился материал? Пригодилась информация? Плюсани в социалки!


 
Похожие новости
Добавить комментарий


Защитный код