chrome的xss過濾器叫xssAuditor,相似IE的xssFilter,可是他們有很大的內在區別javascript
chrome xssAuditor工做原理php
chrome的xss檢測名稱爲 xssAuditor 整合到webkit當中,chrome這麼作的緣由是由於過濾器能夠在腳本執行以前就能夠攔截,並且任何使用webkit均可以使用這些規則css
當加載網頁時,xssAuditor會在渲染的以前評估用戶的輸入數據:html
1.檢查用戶輸入是否包含惡意內容,若是存在進行攔截java
2.xssAuditor檢測用戶是否會反射到渲染的頁面中(html實體/html熟悉/javascript/css/url)web
3.評估輸入上下文是否合法,非法進行過濾chrome
chrome的檢測機理和ie還有很大的區別是,chrome是在此法解析階段進行的,講html解析不一樣的token(相似php vld opcode),xssAuditor會逐一掃描檢測token,瀏覽器
若是token中發現危險的屬性和URL進行比較,若是URL中也存在一樣的數據,xssAuditor則會認爲這是一個反射XSS。安全
demo:xss
解析器解析<iframe src="x" onerror="alert(1)"></iframe>
1.依次檢查標籤iframe是否包含惡意屬性,src/onerror
2.若是src不是以javascript:開頭,則安全,放行
3.onerror中含有腳本,檢查URL是否包含
4.若是出如今URL中,認爲存在安全問題,將過濾 <iframe src="x" onerror="void(0)"></iframe>
5.停止iframe標籤檢查
IE xssFilter工做原理
IE的xssFilter是在IE8 beta2開始的,IE的xss檢測比較粗暴,IE的xssFilter基於正則進行檢測的
具體規則存在位於C:\Windows\System32下的mshtml.dll文件中
咱們可使用以下命令進行查看:
findstr /C:"sc{r}" C:\WINDOWS\SYSTEM32\mshtml.dll|find "{"
每一行爲一條規則,若是發現規則的時候將payload替換爲#
本文總結基於《白帽子講瀏覽器安全》