Ответ 1
Что такое Tainted?
Пользовательский ввод испорчен, по определению. Например:
string = gets
string.tainted?
# => true
Вы также можете вручную испортить объект.
string = 'Not yet tainted.'
string.tainted?
# => false
(string = 'Explicitly taint me!').taint
string.tainted?
# => true
Почему Untaint Object?
Как правило, вы должны удалить объект только после проверки и/или дезинфекции. Отключение объекта означает, что он является "безопасным" для определенных операций, которые вы не хотели бы запускать на ненадежных строках или других объектах, или когда ваш безопасный уровень требует использования незанятого объекта для выполнения требуемой операции.
Удаление объекта
Самый простой способ отключить объект - вызвать метод Object # untaint. Например, если ваша строковая переменная содержит зараженный объект, то:
(string = "Let taint this string!").taint
string.untaint.tainted?
# => false
Подробнее о Tainted Objects
Вы можете узнать больше о tainted объектах из Блокировка Ruby в разделе Safe в разделе Programming Ruby.