在角的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