簡體   English   中英

如何使用$ watch違反Angularjs?

[英]How to breach Angularjs using $watch?

在angular js安全文檔中,它是使用$ watch編寫的,以觀察用戶生成的內容的值是不安全的:

可以通過多種方式來控制模板和表達式:...

在調用范圍內將由用戶提供的內容生成的表達式傳遞給以下方法:...

$ watch(userContent,...)

這里的userContent是什么意思? 如果我觀看用戶輸入字段的ngModel值,這是userContent嗎? 小提琴中的表格不安全嗎?

$watch expression是eval受限形式 ,其中AngularJS表達式解析器對表達式進行解析,並根據當前范圍進行評估。

盡管AngularJS表達式解析器具有針對實際eval評估任意JS代碼的安全措施,但安全隱患可能仍然存在,並且已知的漏洞可能在較舊的框架版本中被利用。

這意味着$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);
});

使用$ watch,您可以隨時關注任何ng模型。 例如,您有1張圖,而在上方有1個圖,分別是年至今,月初,季度至今。 現在說,下拉模型的名稱是dateChange現在可以在dateChange上進行監視,因此,只要dateChange中有更新,就會知道$ watch函數,然后可以相對於該表更新圖的數據選擇

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM