Я використовую 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