簡體   English   中英

ElementRef 和@ViewChild,不推薦?

[英]ElementRef and @ViewChild, is not recommended?

我是 Angular 新手,我試圖理解:

指令@ViewChild 在沒有 Elementref 的情況下有什么用?

Elementref 直接訪問 DOM? 還是虛擬DOM?

為什么 angular 團隊會說:“允許直接訪問 DOM 會使您的應用程序更容易受到 XSS 攻擊。” 這意味着 Vanila JS 是危險的,因為聲稱:JavaScript 訪問 DOM?

ViewChild是一個屬性裝飾器,可幫助您注入對組件或 DOM 引用的引用。
在你的情況下,你關心的是后者。 ElementRef包裝了對 DOM 元素的引用。

Angular 提供了用於 DOM 操作的工具——比如Renderer帶有內置的清理機制,如果你使用ElementRef來修改 DOM,你需要處理你自己的清理機制(因為你繞過了 Angular DOM 清理)以避免 XSS 攻擊。 如果您不修改 DOM,那么設計就是安全的。

我不同意直接使用 DOM 冒 XSS 攻擊的風險。

畢竟, Angular 運行時正在這樣做! 此外,無論是從客戶端單獨擁有的服務器提供給瀏覽器的任何內容。 沒有什么可以在服務器和瀏覽器之間進行調解。

  1. 必須有人在客戶家中並在客戶的 url 中輸入惡意參數。 然后必須將該參數插入到輸入框中。
  2. 有人實際上必須修改服務器端的源代碼才能調用不受信任的代碼。

那時(第 2 點),您在服務器完整性方面遇到了更大的問題。 重點是,直接修改 dom 是每個網站所做的(DOM 解析 html),而 Angular 運行時則廣泛地執行此操作,因為它構建每個元素而不是 DOM 解析 html 表。

我知道很多人會為此向我發火。

暫無
暫無

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

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