当前位置:  开发笔记 > 编程语言 > 正文

我如何纺织和消毒HTML?

如何解决《我如何纺织和消毒HTML?》经验,为你挑选了1个好方法。

现在我遇到了一些愚蠢的情况.我希望用户能够使用纺织品,但他们不应该在他们的条目周围乱用我的有效HTML.所以我必须以某种方式逃避HTML.

html_escape(textilize("Foo")) 会破坏纺织品

textilize(html_escape("Foo"))可以工作,但打破各种纺织品功能,如链接(写得像"Linkname":http://www.wheretogo.com/),因为引号将转化为"纺织品,因此不再被纺织品检测到.

sanitize 没有做得更好.

有关那个的任何建议吗?我宁愿不使用Tidy来解决这个问题.提前致谢.



1> Marcel Jackw..:

对于那些遇到同样问题的人:如果你使用RedCloth gem,你可以定义自己的方法(在你的一个助手中).

def safe_textilize( s )
  if s && s.respond_to?(:to_s)
    doc = RedCloth.new( s.to_s )
    doc.filter_html = true
    doc.to_html
  end
end

摘自文档:

用于设置安全限制的访问器.

如果您在公共场所(例如Wiki)中使用RedCloth进行格式化,那么这是一件好事,您不希望用户滥用HTML来处理不良内容.

如果filter_html设置,则不会转义未由Textile处理器创建的HTML.或者,如果sanitize_html设置,HTML可以通过Textile处理器,但将删除未经授权的标签和属性.

推荐阅读
罗文彬2502852027
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有