(1)瀏覽器解析html
(2)標籤轉化為dom節點,識別標籤時,html解析器無法識別被實體編碼的內容,在建立起dom樹,才能對每個節點的內容進行識別
(3)js dom api(js解析器)參與,對dom樹進行修改,改變其內容。此時css解析器解析外部css及style標籤,一起構成rendering tree==
(4)這裡css在構造rendering tree之前,會有css rule tree
(5)布局完之後,使用ui後端完成每個節點的繪製,從而顯示
在上述有兩個解析器需要特別注意,分別是html解析器、js解析器、cs解析器(這個暫時不提)。因為基本上xss編譯碼payload就是靠這兩個來利用的。
作用:構造dom樹,對節點內容進行解析
作用:在處理script,style標籤,解析器會自動切換為js解析模式,而src,href後面加的js偽協議也會進入js解析模式。進入該模式時,dom已經建立起來了
1.使用實體編碼繞過,例子如下:
注意:實體編碼不能對標籤字段進行,例如:標籤表示式: 《標籤名 控制字元 屬性名="資料值" 事件名="事件值">
此時只能對資料值、事件值進行實體編碼才能彈窗。
此時,有相同作用的編碼格式有:
(1)html實體編碼:a
(2)十六進製制:a
(3)十進位制:a
(4)支援數字部分高位補充0,a(a)
2.js解析
開啟頁面後能夠正常彈窗,說明進行了unicode解碼.【同樣只能對字元資料進行編碼,不能對alert()中的()進行編碼】
不管是html解析還是js解析,都是對其字元部分進行操作,例如對於
1)雙引號「 」裡面的內容屬於html標籤的字元部分【所以:
2)onerror事件同時也由js處理,【所以:
3)html和js同時處理:【
3.1 第一步:html實體解碼:
\u0061\u006c\u0065\u0072\u0074 解碼為==》 \u0061\u006c\u0065\u0072\u0074
3.2 第二部:js解碼:
\u0061\u006c\u0065\u0072\u0074 解碼為==》alert
瀏覽器的渲染機制
節選自 1 dom document object model,瀏覽器將html解析成樹形的資料結構,簡稱dom。2 cssom css object model,瀏覽器將css 解析成樹形的資料結構。3 dom 和 cssom 都是以bytes characters tokens nodes ob...
瀏覽器的快取機制
瀏覽器的快取是乙個比較複雜但是比較重要的機制,在我們瀏覽乙個頁面時發現有異常情況,通常考慮的就是 瀏覽器是否做了快取。當瀏覽器做了快取,而我們需要請求最新的頁面內容的時候,通常的做法是按ctrl f5組合鍵重新請求一次這個頁面。ctrl f5組合鍵重新整理頁面,瀏覽器會直接向目標url傳送請求,而不...
瀏覽器的渲染機制
google web fundamentals 是乙個非常優秀的文件,裡面講到了跟web 瀏覽器 前端的方方面面。我總結一下其中的 ilya grigorik 寫的 critical rendering path 瀏覽器渲染機制部分的內容如下 1 dom document object model,...