2012-02-05 2 views
0

Я использую Rails 3 и Ruby 1.9.2. Я делаю что-то особенное, когда я отображая содержание моего поста, я просто делаюRails - javascript-инъекции

<%[email protected]%> 

Когда я добавляю

"<script language='javascript'>alert('test');</script>" 

к моему сообщению форме, конечно, он выполняет яваскрипт предупреждения !

Я попытался добавить html_safe как перед сохранением, так и перед отображением, но ничего не исправить.

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

+0

Это зависит. Пожалуйста, покажите нам свой код. – SLaks

+0

Я добавлю это через несколько минут ... –

+0

Обратите внимание, что вы должны ** НЕ использовать ** html_safe' в этом случае. Выполняется javascript ** BECAUSE ** вы используете 'html_safe'. 'html_safe' означает« Этот HTML-код безопасен, поэтому вам не нужно его избегать ». Если вы избавитесь от своих вызовов 'html_safe', Rails по умолчанию позаботится об угрозе потенциально вредоносного контента. – Mischa

ответ

2

Rails 3 довольно строги о побеге, что вы положили в свой взгляд, но в Rails 2 и раньше это была ваша ответственность, чтобы сделать это , Вы должны выйти все, используя метод h помощника:

<%= h(value) %> 

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

+0

Если OP не использует версию Rails менее 2.3.6, вам не нужно h, независимо от того, используете ли вы Rails 2 или 3. – varatis

+0

Полезно знать. Я думал, что это 2.3.x. – tadman

1

Вы используете Rails 3? Материал javascript должен автоматически сбрасываться.

Но для получения дополнительной информации о предотвращении XSS, я бы просто посмотреть на Ryan Bates' RailsCasts.