gpt4 book ai didi

javascript - 让用户定义 Angular 表达式是否安全?

转载 作者:行者123 更新时间:2023-11-30 00:01:37 24 4
gpt4 key购买 nike

在我的 Angular 应用程序中,我想让用户定义高级过滤器表达式来过滤显示的对象。我在看不同的图书馆,似乎 filtrex正在做我想做的事,但它允许的表达式数量可能不足以满足我的目的。

我正在考虑简单地使用 Angular 表达式。我会实例化一个新的 Angular 模块(以确保我的应用程序中定义的过滤器或 rootScope 变量不会成为问题),然后只需在其中运行 $parse

由于我的用户定义的过滤器表达式将保存在应用程序中并在其他用户打开应用程序时运行,因此过滤器表达式中不能输入有害代码是至关重要的。

因此我的问题是:用户定义 Angular 表达式是否安全?或者他们是否允许以任何方式做一些有害的事情,例如修改 dom、重定向到另一个页面、发出 HTTP 请求,或者我现在想不到的其他事情?

最佳答案

根据Angular security guide , 永远不应该执行用户提供的表达式。

在 Angular 1.5 之前,表达式是在沙箱中执行的,以防止不良的编程风格(不是为了防止安全漏洞)。在 Angular 的每个版本中,都找到了逃避沙箱的方法。通过在网络上搜索 angular sandbox escape 可以找到许多示例,并且可以找到对该问题的简短概述 here .

在 Angular 1.6 中,沙箱 has been removed ,因此从表达式运行任意 JavaScript 应该更容易。

所以让用户定义 Angular 表达式是绝对不安全的。

关于javascript - 让用户定义 Angular 表达式是否安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40237317/

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