Я думаю, что режим taint будет лучше всего работать при разработке нового кода, с которым все знакомы.
Если у вас есть чужой код, который плохо написан, и вы запускаете его в режиме Taint - Perl умрет, а не выполнит то, что по правилам заражения является «небезопасной» операцией.
В режиме taint некоторые отверстия исправлены, но не все. system ("$ unfiltered_user_input") умрет, но Perl все еще может записать данные $ unfiltered_user_input в файл с фиксированным именем (поскольку печать испорченных данных считается «безопасным»), а затем выполнить этот файл с помощью system (). Но ничто не может проверить все.
Есть компромисс в использовании его в старых приложениях. Когда Perl обнаруживает небезопасную операцию с испорченными данными, он умирает - это означает, что кто-то должен войти и решить, что означает незаполнять данные, какие регулярные выражения необходимы, прежде чем приложение снова станет надежным.
Некоторые люди предпочли бы небезопасную, надежную, недорогую (на данный момент) - безопасную, сломанную, необходимость найти разработчиков. Не так уж хорошо в долгосрочной перспективе ... но это не необычно.