Какова цель заражения объектов Ruby? - PullRequest
11 голосов
/ 15 ноября 2009

Мне известно о возможности помечать ненадежные объекты как испорченные, но какова основная цель и почему я должен это делать?

Ответы [ 2 ]

7 голосов
/ 17 ноября 2009

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

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

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

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

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

6 голосов
/ 15 ноября 2009

Раньше это было довольно стандартной практикой при написании CGI на Perl. Существует даже FAQ по нему. Основная идея состояла в том, что время выполнения может гарантировать, что вы неявно не доверяете испорченному значению.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...