如何逃避HTML?

Chr*_*ini 5 security xss ruby-on-rails-3

我使用jQuery Markitup允许用户输入html ...所以他们可以输入如下内容:

<h1>Foo</h1>
<p>Foobar</p>
Run Code Online (Sandbox Code Playgroud)

但是,我正在观看http://railscasts.com/episodes/204-xss-protection-in-rails-3并决定在输入中尝试这段代码:

<script>alert('test');</script> 
Run Code Online (Sandbox Code Playgroud)

令我惊讶的是,当我提交表格并刷新页面时,警报框出来了.这是一个安全风险!

这就是我的看法:

<div><%= comment.description.html_safe %></div>
Run Code Online (Sandbox Code Playgroud)

上面呈现任何html,但也容易出现xss.所以我尝试过:

<div><%= html_safe(comment.description).html_safe %></div>
Run Code Online (Sandbox Code Playgroud)

但上面没有渲染任何HTML.它实际上将html显示为文本,这不是所需的行为.

我需要渲染html,同时保护自己不受xss的影响.我该怎么做?

Spe*_*ose 0

尝试

<%= sanitize(comment.description) %>
Run Code Online (Sandbox Code Playgroud)

更新:

要删除所有标签,请使用 strip_tags