IE是怎麼處理metasteam的編碼的&&那100+個xss
IE是怎麼處理meta steam的編碼的 && 那100+個xss
【起源】
最近hei***放言在各個大網站都存在100+個xss。這是的確存在的,問題出在IE處理meta steam的編碼策略上。
【原理】
IE是怎麼處理meta steam的呢?我舉個demo來說明:
[a.php]
<script src=”js.php” charset=”gbk” type=”text/javascript” ></script>
[js.php]
header:Content-Type: text/html; charset=big5
+/v8
alert(“+ADs-“);
解釋步驟:
1. IE渲染a.php時,遇到載入 <script src=”js.php” 的請求,此時IE為js.php定義的編碼是default:unicode。
2. IE解釋charset=”gbk”屬性時,js.php的編碼從default:unicode轉為gbk。
3. IE讀取js.php,遇到http頭“Content-Type: text/html; charset=big5”時,js.php的編碼從gbk轉為big5。
4. IE獲得js.php輸出的正文後,檢查頭幾個位元組是fffe還是+/v*——如果是fffe,編碼轉換為unicode;如果是+/v*,編碼轉化為utf-7。
5. 如果該steam是由 <link>標籤載入的css文件,就檢測@charset標記——如果有,則轉化為@charset對應的編碼。
(經測試,在IE8下使用http頭指定charset後,第4步不會再轉化編碼。大家自己測試吧)
【導致的問題】
1.文字儲存xss
http://hitn.bdimg.com/linx2008/css/item/8e4c24973277cc6d54fb9668.css
+/v8
body {
xxx: expressi+AG8AbgAoA– (window.x==123456)?1:(x=123456) );
}
(開啟hi.baidu.com/linx2008/home,然後輸入javascript:alert(x);)在heig**blog上也有demo
2.json的”callback”引數(100+個xss的源頭)
http://apps.hi.baidu.com/dashan/data/status?asyn=1&callback=【utf-7頭】【utf-7資料流】……
【解決方案】
方法1:對於json的場景,設定header:Content-Type: “json”
方法2:不要讓正文輸出的第一個符號是”+”。
eg:在資料輸出的正文前加個空格or換回;或者過濾”+”開頭的引數輸出。
相關文章
- Dubbo 自定義異常,你是怎麼處理的?
- Spring 是怎麼處理迴圈依賴的?Spring
- 卷向位元組碼-Java異常到底是怎麼被處理的?Java
- 你是怎麼處理vue專案中的錯誤的?Vue
- 大量的影片怎麼批次進行打碼處理?
- IE事件處理事件
- C++中的字串編碼處理C++字串編碼
- Java 處理 \x 開頭的編碼Java
- Xshell中文亂碼怎麼處理?
- 解析的JSON裡面欄位是動態的怎麼處理?JSON
- 專業貼:100+個自然語言處理資料集自然語言處理
- 我請教大家這個平常的問題怎麼處理的
- 讀了那麼多GANs的原理,還是不懂怎麼用!兩個案例教教你
- Bypass IE XSS FilterFilter
- codecs 編碼處理
- 斷言的東西如果是有延遲的要怎麼處理?
- 揭秘|每秒千萬級的實時資料處理是怎麼實現的?
- PHP童鞋改JAVA程式碼怎麼處理PHPJava
- 爬蟲抓了那麼多的資料,該如何處理呢?爬蟲
- 大資料的處理是怎樣的過程大資料
- AngularJS – 如何處理 XSS 漏洞AngularJS
- win10系統ie怎麼知道是32位的還是64位的Win10
- 多語言應用後臺系統大家是怎麼處理的
- 自然語言處理技術是怎麼進入新階段的?自然語言處理
- p3c 外掛,是怎麼檢查出你那屎山的程式碼?
- win10ie主頁修改了無效怎麼回事 win10修改ie瀏覽器主頁無效怎麼處理Win10瀏覽器
- 什麼是流處理
- 什麼是批處理
- lxml處理xml時的字元編碼問題XML字元
- 怎麼處理Word中的豎箭頭
- Python 編碼為什麼那麼蛋疼?Python
- 火了那麼久的區塊鏈,到底是個什麼玩意?區塊鏈
- 程式碼是怎麼執行的?
- python異常處理的流程是什麼?Python
- JiveJdon 的事務處理機制是什麼?
- hibernate案例裡的那個HibernateTemplateTest怎麼執行
- maven編譯遇到"編碼GBK的不可對映字元"警告的處理Maven編譯字元
- 一個網站有多個語言版本怎麼處理?網站