Список или комбинация представляющих опасность символов зависит от того, для чего и где их собираются применять. Создать универсальный фильтр для случаев жизни, невозможно.
Например, перед тем как добавлять новую запись в гостевую книгу, желательно проверить на наличие вредоносных тегов, однако не запрещайте пользователям пользоваться тегами. При передаче E-mail пользователя внешнему МТА, стоит убедиться в отсутствии каких-либо символов перенаправления ввода (обрамляющие тэги, неотличимых от кавычек), так как злоумышленники могут ввести следующее:
"hacker2000@hotmail.com; mail hacker2000@hotmail.com Искать слабых места в скриптах намного проще, если задействовать механизмы tainted data (меченных данных). Запустив Perl с ключом “–T”, он потребует инициализации и фильтрации всех имеющихся скалярных переменных, передаваемых функциями exec, eval, system и с другими представляющие по его мнению опасность. Любая переменная, полученная извне (переменные окружения, командная строка, стандартный поток ввода), отмечаются как “зараженными” и будут переданы “нехорошим” функциям, пока их не “вылечат” с помощью фильтра регулярных выражений. В случае, если “зараженная” переменная присваивается другой – то получает статус “зараженная”.
Однако Perl не проводит проверки правильности фильтрации символов и допускает сквозную фильтрацию - "(.*)", и функцию print не признает как опасную. Приводимая конструкция "$a=<>; print $a" не подвергается критики Perl, а известно, что переменная $a вполне может содержать вызовы SSI и вредные тэги.
Принцип работы механизма меченных данных и его реализация в формате языка Perl, – не является панацеей от всех проблем. “Зараженный режим” целесообразно применять как еще одна мера самоконтроля. В случае если, ошибки не были найдены, это еще не значит, что их там нет. Это напрямую относится к ключу “w”, вынуждающий язык Perl выполнить дополнительную проверку, и болезненно реагировать и критиковать попытки чтений не инициализированных переменных, попыток модификаций файловых манипуляторов и прочее. Даже если это хоть и повысит уровень безопасности, но только ненамного.