Режим безопасности Perl Taint Mode
Описание
Использование режима Perl
Taint Mode позволяет отслеживать данные, приходящие от внешнего пользователя и устранять выполнение небезопасных операций с данными.
Идея метода
Taint Mode основывается на следующих принципах:
- Все данные, полученные через HTTP-запросы, считаются ненадежными;
- Все ресурсы, локальные по отношению к web-приложению, считаются надежными;
- Ненадежные данные могут стать надежными в следствии специальной обработки.
Taint Mode помогает:
- устранить SQL-инъекции;
- устранить Perl-инъекции;
- устранить XSS.
Использование
Включение режима
Taint Mode в Perl осуществляется при помощи опции «
-T».
Для того чтобы все скрипты системы NSUts работали с этой опцией, необходимо добавить данную опцию к строке подключения интерпретатора Perl в файле настроек Apache.
Рекомендации по написанию безопасного кода
- использование регулярных выражений, строго определяющих диапазон входных данных, таких как параметры HTTP запросов, cookies;
В системе NSUts для этого предназначены следующие функции:
- Service::untaintID – валидация идентификаторов;
- Service::untaintFileName – валидация имени файла, не включая путь;
- Service::untaintFilePath – валидация полного имени файла.
использование параметризованных запросов. В системе реализуется через Perl::DBI;
фильтрация специальных символов и HTML-тегов в сообщениях пользователей. В системе реализуется через Service::dump2html, Service::dump2text;
переменная окружения PATH должна быть безопасной. Необходимо проверить, чтобы она содержала только те пути, которые безопасны для обычного пользователя и содержала каталоги, которые не могут быть изменены кем-либо, кроме их владельца (пример: $ENV{PATH} = «/bin:/usr/bin");
необходимо избавиться от неиспользуемых переменных окружения. В частности, удалить IFS, CDPATH, ENV и BASH_ENV (пример: delete @ENV{ 'IFS', 'CDPATH', 'ENV', 'BASH_ENV' }).