2009-11-15 2 views

ответ

5

Раньше это была довольно стандартная практика при написании CGI в Perl. There is even a FAQ on it. Основная идея заключалась в том, что время выполнения может гарантировать, что вы не косвенно указали trust испорченное значение.

+3

И, поскольку вопрос отмечен как «ruby»: Ruby скопировал эту функцию с Perl. – ephemient

+0

К сожалению, я забыл упомянуть об этом. Спасибо, эфемерный. –

6

Один трек в качестве меры предосторожности для обеспечения того, чтобы ненадежные данные не были ошибочно использованы для расчетов, транзакций или интерпретировались как код.

Отслеживание пятна с помощью встроенной функции языка является более четким и надежным, чем отслеживание через соглашения о кодировании или полагаться на проверку кода.

Например, ввод от пользователя обычно может считаться «ненадежным» до тех пор, пока он не будет правильно очищен для вставки в базу данных. Маркируя входные данные как загрязненные, Ruby обеспечивает удовлетворительную санитарию и предотвращает потенциальную атаку SQL-инъекций.

Для примера «древнего» (2005) кодирования практики, которая демонстрирует, как порча отслеживали без таких модулей Perl и Ruby, но читать некоторые старые добрые Иоиля:

http://www.joelonsoftware.com/articles/Wrong.html