Gil*_*man 5 ruby xss ruby-on-rails ruby-on-rails-4
我想弄清楚这段代码是否安全。是否有可能攻击这段代码?
<script>
data = <%= data.to_json.html_safe %>;
</script>
Run Code Online (Sandbox Code Playgroud)
换句话说,什么值data会导致成功的攻击?
Kor*_*ght -1
这在某种程度上取决于您对数据的处理方式以及您使用的 Rails 版本。如果您使用的是 Rails 3 之后的任何版本,那么不行,调用html_safe可能会使您的代码容易受到 XSS 攻击。
基本上,您所做的就是告诉应用程序data.to_jsonhtml 是安全的。然而,应用程序实际上并不确定这一点。
它的作用html_safe是将字符串标记为安全的,可以直接插入 HTML,而不会转义字符串中的任何内容。正如方法 api 中所述,它不应该用于用户输入。构造的输入可能是安全的,但要由您来确保它是安全的。
to_json将给定字符串转换为 JSON。默认情况下,它不会转义 HTML 字符,例如<, / >
因此,如果data是用户输入,那么某人完全有可能将自己的脚本插入其中,并按照当前编写的方式将其标记为安全(从而呈现为 html)。
按照这种写法,如果有人执行以下操作:
data = "</script><script>insert_xss_attack_here</script>"
您的代码不会转义脚本,从而导致脚本被代码执行。
许多人描述了 html_safe 和 to_json 的问题:
这专门涉及 to_json.html_safe http://jfire.io/blog/2012/04/30/how-to-securely-bootstrap-json-in-a-rails-view/
https://bibwild.wordpress.com/2013/12/19/you-never-want-to-call-html_safe-in-a-rails-template/
http://makandracards.com/makandra/2579-everything-you-know-about-html_safe-is-wrong
| 归档时间: |
|
| 查看次数: |
1964 次 |
| 最近记录: |