【问题标题】:clean/sanitize HTML, but preserve loses HTML chars with Ruby/Rails + Nokogiri + Sanitize (?)清理/清理 HTML,但使用 Ruby/Rails + Nokogiri + Sanitize 保留丢失 HTML 字符(?)
【发布时间】:2012-07-13 10:07:51
【问题描述】:

我们使用了 Sanitize gem 和 HTMLEntities 的组合来清理用户输入的 HTML。 Sanitize 宝石使用 Hpricot,但现在使用 Nokogiri。我需要让 Hpricot 退出应用程序。

这里有两个测试字符串,每个字符串后面都是我期望的输出:

测试字符串1:

"SOME TEXT < '<span style='background-image: url(\"http://evil.ru/webbug.png\")'>MORE' & TEXT!!!</span>"

expected_text = "SOME TEXT < 'MORE' & TEXT!!!"

第二个测试字符串(路径略有不同):

'Support <i>odd</i> chars like " < \' ‽'

expected_text = 'Support <i>odd</i> chars like &quot; &lt; &#39; ‽'

这是你解决的问题吗?你用了什么工具?

【问题讨论】:

  • 抱歉,我无法理解您的问题。你说你的测试失败了。你得到的结果是什么,而不是预期的结果。您是否希望清理一些标签、保留一些标签以及将特殊字符转义为 HTML 实体?
  • 为了清楚起见,我已经编辑了这个问题。但是,是的,对于第一个字符串,我希望 html 标签被剥离,但松散的 '

标签: ruby ruby-on-rails-3 nokogiri hpricot sanitize


【解决方案1】:

您可能想尝试丝瓜络宝石:

Loofah.document("SOME TEXT < '<span style='background-image: url(\"http://evil.ru/webbug.png\")'>MORE' & TEXT!!!</span>").to_html
=> "SOME TEXT MORE' &amp; TEXT!!!" 

由于某种原因,Loofah 没有处理第二个示例中的 unicode 字符,但是如果您在 Loofah 上提交 Github 问题,我很乐意调查它(完全披露:我是 Loofah 的作者和合作-Nokogiri 的作者)。

更多链接:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-23
    • 1970-01-01
    相关资源
    最近更新 更多