在角的js文件的安全性是使用$腕表观看的用户的值写入生成的内容是不安全的:
有一些是模板和表达式可以控制方式:...
传入呼叫从用户提供的内容,以产生一个上范围以下方法的表达式: ...
$观看(userContent,...)
userContent在这里有什么含义?如果我看用户输入字段的ngModel值,这是一个userContent吗?小提琴中的形式不安全?
在角的js文件的安全性是使用$腕表观看的用户的值写入生成的内容是不安全的:
有一些是模板和表达式可以控制方式:...
传入呼叫从用户提供的内容,以产生一个上范围以下方法的表达式: ...
$观看(userContent,...)
userContent在这里有什么含义?如果我看用户输入字段的ngModel值,这是一个userContent吗?小提琴中的形式不安全?
以$看你可以保持眼睛上的任何NG-模型。例如,如果您有1个图表,那么您的年至今,月初至今,季度到目前为止的下拉列表。 现在说,下拉型号名称是dateChange 现在你可以保持一个手表上dateChange所以所以每当有在dateChange更新,$监控功能会知道,然后你可以更新图表相对于数据到选择
我知道'$ watch'用于什么!我想知道'$ watch'不良使用的用例是什么,它会将您的应用程序打开到XSS攻击。 – Rachmaninoff
$watch
表达限制的eval
,其中表达是由AngularJS表达解析器解析和针对当前范围评价的形式。
虽然AngularJS表达式解析器有保障措施,防止任意评估JS代码与真正的eval
,安全隐患仍然可能存在,并且已知的漏洞可以在旧的框架版本中潜在的利用。
这意味着$on.constructor('alert(1)')()
表达无法进行评估,并不会产生任何向上的最新版本AngularJS安全威胁。但考虑到$window
服务暴露于范围(其是用于ES6控制器一种常见的做法),$window.alert(1)
表达进行评估。
这不能构成安全威胁:
$scope.$watch('myValue', function() {
console.log($scope.myValue);
});
这可以构成安全威胁:
$scope.$watch($scope.myValue, function() {
console.log($scope.myValue);
});
感谢您的回答,如果我将'myVar'绑定到文本输入字段并且用户输入了一些javascript,它会导致问题? – Rachmaninoff
它是安全的,只要你做'$腕表( 'myVar的',...)'和'不看$($ scope.myVar,...)'(这不会有理想的效果任何方式)。 – estus
我们有很多'$腕表($ scope.myVar,...)的'在我们的应用程序应该怎样现在? – Rachmaninoff
这里的jsfiddle:https://jsfiddle.net/un55cprk/ – user1131522