Rails - как избежать межсайтовых скриптов - PullRequest
2 голосов
/ 20 августа 2009

как избежать межсайтового скриптинга в "ruby on rails"

я использовал код ниже

и, я хочу знать, как и где мы проверяем, работает этот скрипт или нет.

Ответы [ 2 ]

2 голосов
/ 20 августа 2009

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

Учитывая ваш пример, я создал пользователя с именем <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="#">&lt;script type=&quot;text/javascript&quot;&gt;alert(&quot;XSS&quot;)&lt;/script&gt;</a>

Клиент, просматривающий эту страницу с включенным JavaScript, не увидит стандартную подсказку.

Это техника, которую вы можете использовать для проверки уязвимости представления для атаки межсайтового скриптинга.

Альтернативный вариант - рассмотреть возможность использования HAML. HAML можно настроить так, чтобы он всегда экранировал выход, если вы явно не попросите, чтобы он был необработанным. Я склонен полагать, что это будет поведение по умолчанию в Rails 3 с использованием ERb.

0 голосов
/ 22 августа 2009

Если вы хотите добавить автоматический переход в Rails 2.x, взгляните на rails_xss Майкла Козярского. Делает именно то, что вы ищете:)

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