gpt4 book ai didi

angularjs - Angularjs 沙箱转义的含义是什么?

转载 作者:行者123 更新时间:2023-12-01 13:40:51 24 4
gpt4 key购买 nike

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

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

我不明白的是为什么这么重要?上面的例子只有当表达式已经在 html 中时才有效。为什么我要逃避沙箱而不是使用常规 XSS 注入(inject) <'script>?

{{<script>alert(1)</script>}}

这个沙箱转义与 $sanitize 和 $sce 有什么关系?

最佳答案

有关 $sce 和 $sanitize 之间区别的一个很好的答案可以在这里找到:When to use $sanitize and $sce ? What's differences between them?我建议您也阅读文档。

这里也有一些很好的例子:https://docs.angularjs.org/api/ngSanitize/service/ $ sanitizer

更新:你可以在 AngualrJS 中看到这个关于沙箱转义的有趣博客。 http://blog.portswigger.net/2016/01/xss-without-html-client-side-template.html最后有一些利用示例,也适用于 AngularJS 1.5X 版本。

我还找到了这篇文章,它可能会更清楚地说明沙盒和清理。 https://www.cigital.com/blog/angularjs-sandbox/

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

关于angularjs - Angularjs 沙箱转义的含义是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40423686/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com