Вы должны избегать всего, что может быть изменено в ваших представлениях, например атрибутов и параметров.
Учитывая ваш пример, я создал пользователя с именем <script type="text/javascript">alert("XSS")</script>
. Предполагая, что вы только проверяете наличие имени, это будет допустимо.
<!-- Raw output -->
<a href="#"><script type="text/javascript">alert("XSS")</script></a>
Клиент, просматривающий эту страницу с включенным JavaScript, увидит стандартное предупреждение. Это говорит о том, что я могу внедрить вспомогательный JavaScript в ваше представление.
<!-- Escaped output -->
<a href="#"><script type="text/javascript">alert("XSS")</script></a>
Клиент, просматривающий эту страницу с включенным JavaScript, не увидит стандартную подсказку.
Это техника, которую вы можете использовать для проверки уязвимости представления для атаки межсайтового скриптинга.
Альтернативный вариант - рассмотреть возможность использования HAML. HAML можно настроить так, чтобы он всегда экранировал выход, если вы явно не попросите, чтобы он был необработанным. Я склонен полагать, что это будет поведение по умолчанию в Rails 3 с использованием ERb.