Кроме отслеживания потенциально опасных переменных, режим проверки потенциально опасных данных предусматривает контроль некоторых часто встречающихся ошибок. Одной из таких ошибок является использование пути доступа к команде, унаследованного от переменных среды. Это может быть, например, в сценарии получения контента страницы про ставки дота 2 . Поскольку функции system () и ехес(), а также функция открытия канала open () при определенных условиях ищут выполняемую команду в пути доступа, злонамеренный локальный пользователь может заставить сервер выполнить не предусмотренную для него программу, изменив переменную среды PATH. Аналогичным образом интерпретатор Perl отказывается работать в режиме проверки потенциально опасных данных, если какой-либо из компонентов переменной PATH доступен для записи любому пользователю. Для командного интерпретатора имеют особое значение еще несколько переменных среды; интерпретатор Perl отказывается работать в режиме проверки потенциально опасных данных, если эти переменные не удалены или не установлены в значение, которое уже не является потенциально опасным. К ним относятся ENV, BASH_ENV, IFS и CDPATH.
Применение режима проверки потенциально опасных данных
Интерпретатор Perl входит в режим проверки потенциально опасных данных автоматически, если обнаруживает, что сценарий работает в режиме setuid или getgid. Для вызова на выполнение в режиме проверки потенциально опасных данных других сценариев, их нужно запустить с флажком -Т. Этот флажок может быть сказан в командной строке: perl -Т eliza_root.pl или в строке # ! самого сценария: