Parser
在不同Browser中(Ex: safari / chrome / firefox …),解析出來HTML/JS也可能有所不同,可能同樣的XSS,只能發生在特定的Browser當中。
HTML parser (Chrome)
JS parser (Chrome)
Sanitize (消毒)
消毒是指在使用者輸入的字當中,過濾掉有害的東西。
EX:
1
2
<img src=x onerror=alert()>
<script>
(消毒中)
1
<img src=x>
DOMPurifiy
用來過濾(消毒)使用者輸入的不安全的html,刪除可能導致XSS的元素
由於每個瀏覽器的parser不同,因此會在Client進行消毒。
mutation XSS
原因就發生在 innerHTML,攻擊者注入HTML,透過DOMPurifiy過濾後,但是因為沒過濾好,反而從安全形式轉換為不安全形式。
mutation XSS in Google
<noscript>在啟用JS和停用JS的parser是不同的,因此在Sanitize(消毒)的時候是停用JS,當然在Browser當中是啟用的,因此就造成解析不同,造成XSS。
Comments powered by Disqus.