在绕过Rails Sanitize的同时将JavaScript注入HTML

时间:2014-11-20 04:06:00

标签: javascript ruby-on-rails xss sanitize

我在轨道上使用ruby进行以下清理以便用户输入...

sanitize(input, tags: %w(a br b h1 h2 h3 h4 i img li ol p strong table tr td th u ul em span), attributes: %w(id class href colspan rowspan src align valign))

有没有人可以注入javascript并绕过这种特殊的清理?任何建议都会有所帮助。

1 个答案:

答案 0 :(得分:0)

允许显示用户输入始终有风险。使用Rails sanitize方法是一个良好的开端,但过去存在安全问题,并且很可能人们将在未来找到超越当前实施的方法。

安全始终是一场军备竞赛。来自sanitize docs

  

它会尽最大努力抵制黑客可能使用的任何技巧,比如投入unicode / ascii / hex值以通过javascript:过滤器

也就是说,比较你的设置w /默认值:

%w(a br b h1 h2 h3 h4 i img li ol p strong table tr td th u ul em span) - ActionView::Base.sanitized_allowed_tags.to_a
=> ["table", "tr", "td", "th", "u"]

%w(id class href colspan rowspan src align valign) - ActionView::Base.sanitized_allowed_attributes.to_a
=> ["id", "colspan", "rowspan", "align", "valign"]

看起来对我无害。