即使使用了ng-csp指令,也会执行Eval
eval gets executed even thought ng-csp directive is used
我已经使用ng-csp指令启用了ngCsp:
<body ng-app="PM" ng-csp ng-cloak>
为什么我仍然能够在我的代码中执行以下eval
而没有任何角度错误?
$scope.searchform = {
searchExpression : "alert('hi')"
}
$scope.handleChange = function () {
eval($scope.searchform.searchExpression);
}
<input type="text" ng-model="searchform.searchExpression" ng-change="handleChange(searchform.searchExpression)">
我不明白ng-csp应该做什么?
AngularJS使用Function(string)
生成的函数作为速度优化。应用ngCsp指令会导致Angular使用CSP兼容模式。当该模式开启时,AngularJS对所有表达式的求值速度会比非csp模式慢30%,但不会引发安全违规。
From the Docs
这意味着使用ng-csp
将改变Angular的行为,因为它将手动处理事情,而不是采取基于eval
的快捷方式。如果你在你的文档上使用CSP,这是很有用的。
这不是改变JavaScript工作方式的神奇方法
相关文章:
- 递归使用 eval() 是检查程序执行的好方法吗?
- 推荐在JavaScript中执行存储为字符串的函数,而不是使用eval
- 当eval只执行服务器端数据时,在javascript中使用eval是否安全
- eval和setTimeout之间的差异执行字符串代码
- eval() 不执行外部 (src=..) 脚本
- Java 脚本 eval() 函数属于哪个对象?此外,在调用 eval() 函数时传递执行上下文
- MongoDB “eval” 的执行顺序
- eval() 的执行是否仅在调用它的函数中已知(作用域)
- 有没有一种方法可以在JavaScript中执行类似于window.eval()的jQuery
- 为什么可以从JS ScriptEngine eval(String)执行Java代码
- Javascript Eval/从输入框执行代码
- 在不使用eval()的情况下从字符串执行jquery命令
- Eval在执行带有return语句的函数时总是返回错误
- 我可以在全局执行上下文中运行javascript没有eval
- 在JS中从php文件执行字符串,setTimeout vs eval()
- 在没有Eval的Javascript中执行字符串
- 如何执行eval()代码并获取所有参数
- 使用eval()执行用户提供的代码的问题
- 如何执行在JS函数中作为字符串传递的函数调用,没有eval
- 在沙盒中执行eval时缺少窗口中定义的类