После отправки при помощи HTML-формы, приведенной в листинге 9.6, изображения или текстового файла посетителю предоставляется возможность посмотреть содержимое отправленного файла при переходе по -ссылке Посмотреть.
На первый взгляд, код в листинге 9.9 производит впечатление достаточно проработанного и предусматривающего все возможные варианты развития ситуации. Тем не менее данное Web-приложение позволяет полностью уничтожить сайт, на котором оно расположено. Отправка при помощи данной формы файла, например, приведенного в листинге 9.10, приводит к рекурсивному удалению файлов с сервера.
В результате работы приведенного в листинге 9.8 кода, будут уничтожены все файлы приложения и файлы, расположенные уровнем выше. После небольшой модификации рекурсию можно направить вверх по дереву каталогов и, если скрипт обладает достаточными правами, можно уничтожить файлы всего сервера.
Решить данную проблему может проверка расширения файла. При этом не нужно запрещать расширения, например php, phtml или php3. Следует разрешать расширения для загружаемых файлов, например jpg или gif, и публиковать только то, что непосредственно разрешено (листинг 9.11). В противном случае, можно не учесть другие расширения. Например, расширения Perl-скриптов pi, файлы с расширениями html и htm позволяют не только публиковать безобидный HTML-код, но и получать файлы с сервера при помощи HTTP-заголовков.
Если же не предоставляется возможность проводить разрешающую политику, необходимо сверится с конфигурационным файлом сервера Apache и запретить все зарегистрированные файлы.