【发布时间】: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 进行模板