Як уникнути html? - ruby-on-rail-3, security, xss

Я використовую 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. Як мені це зробити?

Відповіді:

0 для відповіді № 1

Спробуй

<%= sanitize(comment.description) %>

Оновлення:

Щоб видалити ВСІ теги, використовуйте strip_tags