Я знаю о возможности маркировать недоверенные объекты как испорченные, но в чем основная цель и зачем мне это делать?Какова цель заражения объектов Ruby?
ответ
Раньше это была довольно стандартная практика при написании CGI в Perl. There is even a FAQ on it. Основная идея заключалась в том, что время выполнения может гарантировать, что вы не косвенно указали trust испорченное значение.
И, поскольку вопрос отмечен как «ruby»: Ruby скопировал эту функцию с Perl. – ephemient
К сожалению, я забыл упомянуть об этом. Спасибо, эфемерный. –
Один трек в качестве меры предосторожности для обеспечения того, чтобы ненадежные данные не были ошибочно использованы для расчетов, транзакций или интерпретировались как код.
Отслеживание пятна с помощью встроенной функции языка является более четким и надежным, чем отслеживание через соглашения о кодировании или полагаться на проверку кода.
Например, ввод от пользователя обычно может считаться «ненадежным» до тех пор, пока он не будет правильно очищен для вставки в базу данных. Маркируя входные данные как загрязненные, Ruby обеспечивает удовлетворительную санитарию и предотвращает потенциальную атаку SQL-инъекций.
Для примера «древнего» (2005) кодирования практики, которая демонстрирует, как порча отслеживали без таких модулей Perl и Ruby, но читать некоторые старые добрые Иоиля:
Вы также можете посмотреть at $ SAFE –