Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs沙盒逃逸的含义是什么?_Angularjs_Security - Fatal编程技术网

Angularjs沙盒逃逸的含义是什么?

Angularjs沙盒逃逸的含义是什么?,angularjs,security,Angularjs,Security,我读过AngularJs使用某种沙箱来防止在{{}}花括号内运行任意表达式。根据角度的不同,有几个关于如何逃逸沙箱的示例。例如,在版本1.4.0-1.4.9中,如果我将下面的代码片段粘贴到代码中,它就可以工作 {{'a'.constructor.prototype.charAt=[].join;$eval('x=1} } };alert(1)//');}} 我不明白的是为什么这么重要?上述示例仅在表达式已在html中时有效。为什么我想逃离沙箱而不是仅仅注射一个关于$sce和$sanitize之

我读过AngularJs使用某种沙箱来防止在{{}}花括号内运行任意表达式。根据角度的不同,有几个关于如何逃逸沙箱的示例。例如,在版本1.4.0-1.4.9中,如果我将下面的代码片段粘贴到代码中,它就可以工作

{{'a'.constructor.prototype.charAt=[].join;$eval('x=1} } };alert(1)//');}}

我不明白的是为什么这么重要?上述示例仅在表达式已在html中时有效。为什么我想逃离沙箱而不是仅仅注射一个关于$sce和$sanitize之间差异的好答案可以在这里找到:我建议您也阅读文档

这里还有一些很好的例子:$sanitize

更新: 你可以看到这个有趣的关于AngualrJS中沙箱逃逸的博客。 最后还有一些利用AngularJS 1.5X版本的示例

我还发现了这篇文章,这篇文章可能会对沙箱和消毒有更多的启发。


具体来说,当混合服务器端模板和clide模板(服务器端呈现)时,所有这些XSS攻击都更相关。正如文章中提到的,“用于防止XSS的服务器端技术会对尖括号等特殊字符进行编码,但不会对表示AngularJS表达式的大括号进行编码”,所以可能这就是为什么放置标记不会有帮助的原因,找到打破Angular沙箱的方法是一件“大事”.

我知道$sce和$sanitize之间的区别。我不知道的是,沙箱旁路是否可以用来逃避消毒或以任何其他方式破坏安全。如果不是,那我应该担心吗?我问这个问题是因为我读过它,但我仍然不知道如何在实践中使用它。
{{<script>alert(1)</script>}}