自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

解析檢查——存儲型XSS漏洞解決方案

安全 應(yīng)用安全
Web2.0時代,XSS漏洞不容小覷。特別是在UGC業(yè)務(wù),支持“安全的”HTML是業(yè)務(wù)必須的特性,這就對UGC安全過濾器要求特別高,稍有不慎就會出現(xiàn)存儲XSS漏洞。

編者按:

Web2.0時代,XSS漏洞不容小覷。特別是在UGC業(yè)務(wù),支持“安全的”HTML是業(yè)務(wù)必須的特性,這就對UGC安全過濾器要求特別高,稍有不慎就會出現(xiàn)存儲XSS漏洞。

整篇文章著眼點(diǎn)在“方案”,后續(xù)有機(jī)會我們還可以說說API的運(yùn)營故事(這個元老級項目故事很多)。通過對API的精細(xì)化運(yùn)營是可以發(fā)現(xiàn)0day漏洞的——API自身的,甚至包括瀏覽器。比如CVE-2009-1862、CVE-2011-2458 以及一些其他八卦。

存儲型XSS漏洞,這個作為漏洞界的元老級漏洞類型,在當(dāng)前web2.0時代,一旦被利用,對業(yè)務(wù)造成的影響也將是轟轟烈烈的,比如之前的“XX咖啡廣告”: 

 

本文的主要目的是和大家一起探討在支持業(yè)務(wù)富文本UGC的前提下,如何有效解決存儲XSS漏洞,如果有寫的不對或遺漏的地方,歡迎大家及時指正。

提到XSS漏洞,很多人可能第一印象就是把已公開的xsscode弄個正則全部屏蔽就萬事大吉,但是往往事與愿違,付出了巨大的努力,XSS漏洞還依然存在。本文就根據(jù)XSS漏洞生成原理來逐個講講如何有效解決該問題。

一:整體過濾流程圖

廢話少說,直接看過濾流程圖: 

 

二:屬性值過濾

針對過濾流程中的標(biāo)簽及黑屬性,這里就不多說了,發(fā)現(xiàn)刪除就可以,具體是哪些標(biāo)簽及屬性可參考附件的配置文件,這里重點(diǎn)說下屬性值安全

談到屬性值,才算正式進(jìn)入本篇的重點(diǎn),屬性值大體分為3類

2.1 URL

這里指的URL,就是類似href,src等的值,這里核心的就是按照URL標(biāo)準(zhǔn)識別出引入的URL的協(xié)議,保留允許的協(xié)議即可,比如 

 

2.2 CSS

為什么要提到CSS呢,因為CSS是富文本UGC的一個核心,因為沒有CSS,QQ空間日志內(nèi)容則達(dá)不到用戶想要的炫酷效果,為了保證CSS的安全,我們又得再實現(xiàn)一個CSS語法解析器(由于當(dāng)時場景需要,我們是自己寫的,不過大家也可以參考CSS Parse的開源代碼)。

由于CSS的強(qiáng)大,所以我們首先定義了一串黑名單,比如出現(xiàn)expression,background,javascript,eval一旦出現(xiàn)這些黑名單,這里之前犯過一個錯誤,就是采用刪除邏輯,當(dāng)遇到下面的case,真的是欲哭無淚,后來評估正常UGC,極少出現(xiàn)黑名單里的用法,so直接清空css。 

 

坑1:在完成黑名單清理后,你會發(fā)現(xiàn)IE瀏覽器竟然兼容如下格式的CSS(強(qiáng)大的\) 

 

坑2:同時IE還兼容如下格式(&#編碼,尼瑪?shù)闹С志幋a就算了,最后的;還可有可無) 

 

坑3:你以為他只認(rèn)識html編碼嘛,其實你錯了,他還認(rèn)識unicode編碼。 

 

沒辦法,統(tǒng)統(tǒng)黑名單搞之:出現(xiàn)\ 或 &# 統(tǒng)統(tǒng)清空CSS啊,清空CSS。

坑4:此時,你以為CSS應(yīng)該沒事了,但是IE又出現(xiàn)新的兼容方式:全角字符 

 

繼續(xù)搞,只要出現(xiàn)全角字符,一概清空。

2.3 Flash

講到Flash安全,就重點(diǎn)保障2個屬性值設(shè)置合理就行了:

allowScriptAccess: & allowNetworking

如果條件允許建議統(tǒng)一設(shè)置為:allowScriptAccess設(shè)置為never,allowNetworking設(shè)置為none

但是業(yè)務(wù)往往需要這2個屬性,比如QQ空間日志中要能播放QQ音樂,所以需要首先識別出引入的Flash地址,然后僅對白名單的放開該權(quán)限即可。

這里強(qiáng)烈建議大家不要使用object,因為他比embed處理要麻煩N倍,同時IE大爺對它兼容也超好,比如當(dāng)識別屬性名時,如下編碼格式也是允許的: 

 

三:重寫

打完收工的最后一步,也是蠻重要的一步,重寫這里之前遇到個坑,就是嚴(yán)格安全用戶的閉合字符來做,導(dǎo)致被繞的死去活來,后來一了百了,按照HTML標(biāo)準(zhǔn)直接強(qiáng)制雙引號閉合,屬性值全部編碼過濾。 

 

注:DOM解析識別出style的閉合字符為空格,在丟棄無效的css后,結(jié)果變成了有漏洞的版本了。

四:方案的弊端

該方案要過濾的標(biāo)簽、屬性都是要提前已知的,如果出現(xiàn)新標(biāo)簽,則要及時更新,不然會出現(xiàn)XSS漏洞,這里就經(jīng)歷過2次,第一次為html5新增標(biāo)簽、第二次則為LISTING特性。

附:過濾XSS利用代碼的可執(zhí)行程序及配置文件

使用方法如下:(demo運(yùn)行環(huán)境為gcc4 & linux32位系統(tǒng))

./demo_filterall_aa輸入文件 1 1 輸出文件

輸入為用戶的UGC:test.html
 

 

 

 

過濾后結(jié)果為:

 

 

責(zé)任編輯:藍(lán)雨淚 來源: TSRC
相關(guān)推薦

2013-11-27 17:12:27

2011-07-21 09:25:41

2012-12-11 11:17:12

2015-02-10 14:32:37

XSS漏洞XSS

2019-03-25 07:27:14

XSS漏洞Ecshop

2019-01-15 09:24:07

2021-10-08 16:33:29

漏洞網(wǎng)絡(luò)安全網(wǎng)絡(luò)攻擊

2013-06-03 14:20:34

2010-08-05 13:20:41

Flex最優(yōu)布局

2009-09-15 21:21:54

IT服務(wù)運(yùn)維管理摩卡軟件

2011-12-12 19:38:11

Cisco

2009-08-19 16:59:51

美國西蒙光纜結(jié)構(gòu)綜合布線

2017-05-10 15:53:00

固態(tài)硬盤IBM

2015-03-10 09:13:36

醫(yī)療數(shù)據(jù)存儲解決方案華為

2009-10-14 13:54:49

寬帶布線系統(tǒng)

2009-03-05 09:12:29

IDC網(wǎng)絡(luò)管理

2012-05-07 15:07:00

2014-09-25 13:14:53

2017-05-16 15:00:25

存儲云端解決方案

2009-03-24 19:01:00

存儲虛擬化經(jīng)濟(jì)危機(jī)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號