Автор оригинала: Фанат
не нало гоняться за возможными сочетаниями.
Надо сразу оставить в переменной только разрешенные.
как я написал выше - регом или функцией basename()
Неа ...
Согласен, про ../ я неподумал сразу, надо внести корректировочку
однако все не так страшно
etc/passwd все же не удастся посмотреть т.к. еще расширение .php приписывается
так что максимум какой-нибудь php файл вызвать можно ... если знать его имя
что безусловно тоже не хорошо ... посему предлагается отсечь опасные сочетания
тем же basename например или str_replace
Ваш же подход еще более уязвим. Допустим Вы ограничили регекспами допустимый ввод
Ну допустим не более 10 латинских букв ... таких сочетаний куева туча.
В урле можно скормить допустимое сочетание, при этом файла такого не будет
В итоге, если включено отображение ошибок, include ругнется и раскажет кое что про файловую систему
после чего можно вызвать скрипты из директории dir_for_include напрямую, которые возможно опять ругнуться
Потенциально тоже дыра. Да и просто вызов ошибок из строки url - есть нехорошо.
Или предется переписывать регексп после добаления новой страницы, по сути тогда
его можно заменить на in_array, что тоже согласитесь кривовато.