【问题标题】:How to escape html?如何转义html?
【发布时间】:2011-09-25 12:13:28
【问题描述】:

我使用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 显示为 text,这不是所需的行为。

我需要渲染 html 并同时保护自己免受 xss 的侵害。我该怎么办?

【问题讨论】:

    标签: ruby-on-rails-3 security xss


    【解决方案1】:

    试试

    <%= sanitize(comment.description) %>
    

    更新:

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

    【讨论】:

    • 是的 sanitize 渲染 html,并且不执行来自 JS 的警报。有趣的。但这有什么影响?我在看railscasts.com/episodes/27-cross-site-scripting,Ryan B 提到它“不那么彻底,因为它不会逃避每个 html 标记。这不是那么安全”......
    猜你喜欢
    • 2021-07-30
    • 2011-03-03
    • 1970-01-01
    • 1970-01-01
    • 2017-09-12
    • 2019-03-02
    • 2021-09-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多