Аргерих Л. О языке РНР. Часть 5. Страница 73


Необходимо отметить, что «5» всегда надо указывать на последнем месте или вообще не задавать, чтобы не допустить замены важных переменных сервера переменными, управляемыми пользователем.

register_globals

Это, вероятно, самая опасная из всех настроек РНР. Если она имеет значе­ние on (установка по умолчанию вплоть до РНР 4.1), а не off (значение по умолчанию начиная с РНР 4.2), то переменные EGPCS регистрируются как глобальные. С этим связано несколько угроз.

Прежде всего, это означает, что пользователю не надо проверять, откуда по­ступила переменная (от POST, GET или cookie), поэтому значения перемен­ных могут быть поддельными. Одно это обстоятельство вызывает большин­ство проблем со сценариями РНР. Если вы установили значение этой пере­менной равным off (рекомендуется), то включите t rack_vars в on.

track_vars

Если этот параметр установлен в on (выполняется по умолчанию), то пере­менные EGPCS оказываются в массивах $HTTP_ENV_VARS, $HTTP_GET_VARS, $HTTP_POST_VARS, $HTTP_COOKIE_VARS И $HTTP_SERVER_VARS.

disable_functions

Аргумент этой функции содержит список функций, выполнение которых запрещается РНР. По умолчанию РНР разрешено выполнение всех функ­ций. В число функций, запрещение которых имеет смысл, входят:

• ехес()

Выполняет указанную команду и возвращает последнюю строку выдачи программы

• passthru()

Выполняет указанную команду и возвращает все результаты непосредст­венно в удаленный броузер

• systemO

Примерно то же, что passthru(), но не обрабатывает двоичные данные

• shell_exec()

Функциональный эквивалент оператора обратного штриха, который РНР попытается выполнить в качестве команды оболочки

• рореп()

Выполняет указанную команду и соединяет выходной или входной пото­ки с дескриптором файла РНР

allow_url_fopen

Запрещает открытие удаленных файлов на других FTP- или веб-серверах. Если нет необходимости обращаться к файлам других сайтов HTTP или FTP, установите значение

Безопасный режим

Для решения проблемы защиты совместно используемого сервера в РНР есть функция, устанавливающая безопасный режим (safe mode). Эта функ­ция ограничивает действия, доступные сценариям, ограничивая таким об­разом который сценарии злоумышленников могут причинить серверу и тем, кто с ним работает.

В безопасном режиме РНР проверяет, является ли владелец текущего сцена­рия также владельцем всех файлов, которые он пытается открыть. Если идентификаторы пользователей не совпадают, РНР выводит предупрежде­ние о том, что данная функция ограничена.