
15.04.2008, 23:03
|
|
Постоянный
Регистрация: 10.11.2006
Сообщений: 416
С нами:
10263386
Репутация:
849
|
|
ТС, кури статью
https://forum.antichat.ru/showthread.php?t=26130
Поискав require и include во всех исходниках форума я нашел подключения различных файлов. Много подключений однотипных, например подключается файл так "$phpbb_root_path . 'includes/functions_validate.'.$phpEx", т.е. указание на директорию, которая в зависимости от расположения подключающего файла меняется, затем точное указание на файл, добавление к нему расширения. Скорее всего $phpbb_root_path создана для удобной возможности перемещения файла из одного каталога в другой, и изменение этой переменной позволит легко переопределить пути подключения файла. Изменение этой переменной привело бы к возможности удаленного инклюда. $phpEx определяет расширение PHP скриптов, связано это с тем, что WWW сервис определяет PHP скрипт по его расширению. На некоторых серверах возможны такие варианты как "php3","php5","phtml".
Итак, что же сделано для того чтобы никто не смог переписать эти переменные? В файлах, где переменная "$phpbb_root_path"и "$phpEx" не задается явно, стоит проверка определена ли константа IN_PHPBB, если нет, то скрипт умирает сообщая "Hacking attempt". В файлах, где определяется эта константа, в самом начале определяются и эти две переменные $phpbb_root_path и $phpEx. Изменить эти переменные можно только если register_globals включен (по умолчанию он выключен), и программист забыл поставить проверку константы. Архитектурно неверно использовать подобные приемы, лучше всего жестко определять пути для подключаемых файлов, либо для определения пути использовать константы. Так же лучше всего определить фиксированное расширение для подключаемых файлов и выделить для них отдельный каталог, закрытый, например, с помощью .htaccess, от передачи оттуда файлов . Хотя такие решения с переменными дают возможность использовать данное приложение на различных WWW сервисах.
P.S. Фильтры? 
|
|
|