Beyond XSS 2-4 ~ 2-7 #3
steven4program
started this conversation in
General
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
《Beyond XSS》從 XSS 開始談前端資安 2-4 ~ 2-7
20241114 2-4~2-7
導讀人:Mi
筆記工:Steven
2-4章節回顧
什麼是 Sanitizer API,主要優缺點和它如何幫助防止XSS?
Trusted Types 是什麼,它如何防止XSS?
Sanitizer API 和 Trusted Types 可以結合使用嗎?
可以,這兩個 API 被視為解決不同問題的互補工具。雖然目前瀏覽器還不支援直接整合,但官方文件推薦在實作上將它們一起使用,以更完善地防止 XSS 攻擊。
為什麼 Sanitizer API 和 Trusted Types 目前僅在少數瀏覽器中支援?
這些新功能還處於早期階段,僅在 Chromium based 瀏覽器(Chrome, Edge, Brave...)中支援,Firefox 和 Safari 尚未支援。由於這些功能需要經過長時間的規範與測試,因此尚未成為主流,但未來有望被廣泛應用。
補充:
2-5章節回顧
看起來很安全,但忘記設定一個指示:
base-uri
,這個標籤的作用是改變所有相對路徑所參考的設置,只要加上<base href="https://example.com/">
,那麼 script 載入的腳本就會變為https://example.com/app.js
,攻擊者就可以載入自己 server 上的腳本。阻止的方式就是在 CSP 中加上 base-uri 的規則,如base-uri 'none'
。2-6章節回顧
什麼是 Mutation-based XSS (mXSS)?
藉由瀏覽器渲染 HTML 時自動調整元素位置的特性來實現攻擊。
<svg>
內不應該存在的標籤會被搬出<svg>
<style>
標籤的內容會被解讀為文字<style>
的外層有<svg>
,則<style>
的內容會解讀為 HTML 元素經 Sanitizer 解析為 DOM tree=>
而上面的字串丟給 innerHTML,mutation 發生,所有的標籤都從
<svg>
跳了出來變成 =>Sanitizer 的主要流程包含以下哪一項?
A. 把輸入 HTML 字串轉為 DOM Tree
B. 自動偵測並修復 HTML 結構錯誤
C. 執行 JavaScript 來處理 HTML
Ans: A. 把輸入 HTML 字串轉為 DOM Tree
Sanitizer 會將輸入的 HTML 字串轉換為 DOM 樹,以便過濾不合法的標籤與屬性,但不會自動偵測和修復 HTML 結構錯誤。
在
<svg><p>hello</svg>
的範例中,瀏覽器的最終解析結果是什麼?瀏覽器會將
<p>
及 hello 從<svg>
標籤中「跳出來」,最後形成<svg></svg><p>hello</p>
的結構。2-7章節回顧
Beta Was this translation helpful? Give feedback.
All reactions