Я использую jQuery Markitup , чтобы позволить пользователям вводить HTML ... Таким образом, они могут вводить такие вещи, как:
<h1>Foo</h1>
<p>Foobar</p>
Однако я смотрел http://railscasts.com/episodes/204-xss-protection-in-rails-3 и решил попробовать этот фрагмент кода на входе:
<script>alert('test');</script>
К моему изумлению, когда я отправил форму и обновил страницу, появилось окно с предупреждением. Это угроза безопасности!
Вот что я считаю:
<div><%= comment.description.html_safe %></div>
Выше представлен любой HTML, но он также склонен к xss. Итак, я попробовал:
<div><%= html_safe(comment.description).html_safe %></div>
Но вышеизложенное не отображает html. На самом деле он отображает HTML как текст , что не является желаемым поведением.
Мне нужно визуализировать html и одновременно защитить себя от xss. Как мне это сделать?