Как избежать HTML? - PullRequest
       0

Как избежать HTML?

5 голосов
/ 25 сентября 2011

Я использую 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. Как мне это сделать?

1 Ответ

0 голосов
/ 25 сентября 2011

Попробуйте

<%= sanitize(comment.description) %>

Обновление:

Для удаления ВСЕХ тегов используйте strip_tags

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