我在轨道上使用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并绕过这种特殊的清理?任何建议都会有所帮助。
答案 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"]
看起来对我无害。