【问题标题】:XSS Protection in a Sinatra AppSinatra 应用程序中的 XSS 保护
【发布时间】:2012-04-08 14:33:18
【问题描述】:

对于html = '<b><a href="http://foo.com/">foo</a></b><img src="http://foo.com/bar.jpg" />' 和类似的输入,包括javascript,这样的内容(Sanitize.clean(@post.content) # => 'foo') 会覆盖所有基础以防止用户将javascript 和html 注入数据库吗?

我应该采取额外的步骤来清理用户输入吗?

【问题讨论】:

  • 为什么要阻止用户将 HTML 和 JS 输入数据库?我宁愿阻止原始显示此类内容。类似haml-lang.com/docs/yardoc/…
  • 感谢您的回复。如果没有 HAML,这将如何在 HTML 中完成?我对这种方法有一个整体的担忧。如果我阻止 html & js 显示 raw,那么首先允许它保存到数据库的目的是什么?我宁愿不允许数据保存以避免在我的 UI 中呈现丑陋的 html/js 标签。
  • HTML 只是一种可能的呈现方式,它应该与您的内容分开。如果用户想输入字符>,我认为你不应该在保存到数据库之前对其进行转换。相反,您应该依靠您的框架(或模板库,无论如何)在将内容呈现为 HTML 之前准备内容。那么,你用什么来写你的 Sinatra 视图呢?
  • 我正在使用 ERB 进行模板

标签: ruby sinatra xss


【解决方案1】:

您可以使用 ERB::Util 方法html_escape(别名为较短的h

见:http://ruby-doc.org/stdlib-1.9.3/libdoc/erb/rdoc/ERB/Util.html#method-c-h

注意:从 Mladen 的评论复制为社区 wiki 答案

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-29
    • 2017-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多