噜噜噜综合,又色又爽又高潮免费观看,综合无码一区二区三区四区五区,中文字幕无码人妻aaa片,四虎成人精品永久网站

XSS解決方案:瀏覽器是如是解碼的

51CTO 發(fā)表于:13年06月14日 10:44 [轉(zhuǎn)載] 51CTO

  • 分享:
[導(dǎo)讀]我本人一直關(guān)注“知識(shí)”與“知識(shí)運(yùn)用”之間的區(qū)別,我曾經(jīng)舉過一個(gè)例子說:“知識(shí)”與“知識(shí)運(yùn)用”就如牛郎星與織女星,感覺二者之間似乎關(guān)系密切,實(shí)則相隔甚遠(yuǎn)!

我本人一直關(guān)注“知識(shí)”與“知識(shí)運(yùn)用”之間的區(qū)別,我曾經(jīng)舉過一個(gè)例子說:“知識(shí)”與“知識(shí)運(yùn)用”就如牛郎星與織女星,感覺二者之間似乎關(guān)系密切,實(shí)則相隔甚遠(yuǎn)!我在初學(xué)平面幾何時(shí),經(jīng)常會(huì)這么想: 兩條線平行則永遠(yuǎn)不會(huì)相交,這不是廢話嗎! 三角形兩邊之和當(dāng)然大于第三邊了!…… 在實(shí)際運(yùn)用當(dāng)中,我經(jīng)常是需要用它的時(shí)候想不起來或者用錯(cuò)了它們。

我的文章《輸入驗(yàn)證可避免一半以上的應(yīng)用安全攻擊》,對(duì)于此文我相信是IT業(yè)界的人都能看明白,但是對(duì)于一個(gè)企業(yè)來說,它的價(jià)值萬金,有多少人可以體味呢?

對(duì)于XSS問題的系統(tǒng)性解決方案上也是一樣的。許多公司已經(jīng)90%以上的程度解決了XSS問題,但是依然存在那10%的風(fēng)險(xiǎn),風(fēng)險(xiǎn)在哪里,我想我會(huì)一步一步給大家分享清楚。XSS問題是全球性普遍性問題,沒有深度的探索就不可能有徹底的解決方案,沒有靈丹妙藥,只有正確的方法!

好,進(jìn)入正題。

基于HTTP協(xié)議的B/S(browser/server)架構(gòu)的Web應(yīng)用程序,有它的特殊性,它結(jié)構(gòu)松散、多標(biāo)簽語(yǔ)言相互嵌入以及服務(wù)端與客戶端使用了相互關(guān)聯(lián)實(shí)現(xiàn)上卻完全不同等等復(fù)雜的技術(shù),以至于給基于HTTP協(xié)議的Web應(yīng)用程序埋下了諸多潛在的安全問題,XSS問題就是其中之一。

我們使用C/C++/Javascript,大家都清楚,如果我想在字符串當(dāng)中表達(dá)字符【”】,很自然的就會(huì)想到轉(zhuǎn)義【”】,想在字符串當(dāng)中表達(dá)【】,就得使用轉(zhuǎn)義(與本文中所說“編碼”概念相同)形式【】,在HTML文檔當(dāng)中也是這樣,但是大家有沒有想過這幾個(gè)問題:

1. 這個(gè)轉(zhuǎn)義后的字符串是為誰(shuí)而轉(zhuǎn)義的?

2. 這個(gè)轉(zhuǎn)義后的字符串是何時(shí)被還原成轉(zhuǎn)義前的字符串的?

3. 有沒有可能還原之后的字符被重新放回到代碼中而忽略了轉(zhuǎn)義?

答案:

1. 為解釋器(或編譯器,為了簡(jiǎn)單,后面只稱解釋器)而轉(zhuǎn)義,字符串被解釋后在內(nèi)存當(dāng)中的字符串等同于轉(zhuǎn)義前字符串

2. 通常解釋器是在讀取語(yǔ)言(C/C++/Javascript…)字符串后進(jìn)行本地語(yǔ)言轉(zhuǎn)換前進(jìn)行還原的

3. 有,在基于HTML架構(gòu)的前端(瀏覽器端)應(yīng)用程序,尤為常見。比如: var myString=””; 這個(gè)myString想表達(dá)的字符串是

,如果被 document.write(myString)重新寫到DOM里,結(jié)果是什么呢? 或者也可能會(huì)直接賦值給某一HTML節(jié)點(diǎn)的innerHTML/outerHTML屬性,這里的問題就復(fù)雜了,二次賦值之后,你的程序沒那么聰明,它不會(huì)主動(dòng)替你轉(zhuǎn)義一下再賦值,你可能會(huì)說:這不就是DOM Base XSS嗎? 你想的簡(jiǎn)單了,對(duì)于我來說是DOM Based、反射式的還是存儲(chǔ)式的,這種分類意義不大,解決方案都是一樣,這就是高級(jí)別抽象后的解決方案的統(tǒng)一。這個(gè)問題較復(fù)雜,我們循序漸進(jìn)的來了解它,您先知道有這么回事兒。有心的讀者可能會(huì)問:C/C++/Java會(huì)有這種情形嗎? 答案是:當(dāng)然有,有一些軟件為了兼容性等諸多因素考慮,會(huì)在編譯時(shí)依據(jù)條件不同動(dòng)態(tài)生成新的代碼然后再進(jìn)行編譯,此時(shí)你該如何是好?這不是本文討論的重點(diǎn),為了敘述的完整性,提一下有這么回事兒就行。本文的重點(diǎn)是Web應(yīng)用當(dāng)中的XSS問題。

鋪墊的差不多了,我們來一起看一段以下的HTML的document:

jiayzhan's item

jiayzhan's link

【說明】帶有字符串【jiayzhan】的一整串,您需要將它們理解為類似于這樣的JSP代碼:

下面一步一步來說瀏覽器是如何解碼(反轉(zhuǎn)義)的,我就用字符串本身作為位置標(biāo)識(shí)來解釋:

1. 位置:jiayzhan’s item, 瀏覽器在解析這個(gè)位置的字符串時(shí),無論如何,會(huì)對(duì)其進(jìn)行一次HTML解碼,(HTML編碼、解碼,請(qǐng)參考)

2. 位置:jiayzhan’s onclick,無論如何,瀏覽器會(huì)對(duì)其進(jìn)行:1) 先做HTML解碼 2)再做JS解碼

3. 位置: https://www.jiayzhan.org,無論如何,瀏覽器會(huì)對(duì)其進(jìn)行:URL解碼

4. 位置:jiayzhan’s URL, 無論如何,瀏覽器會(huì)對(duì)此位置字符串進(jìn)行:1)先JavaScript解碼 (JS編解碼請(qǐng)參考) 2)后URL解碼

以上只是一維與二維組合的情形,實(shí)際當(dāng)中還會(huì)有三維以上的解碼組合,特別是大量使用Web2.0技術(shù)的網(wǎng)站。您理解了嗎? 如果您真的理解了,請(qǐng)分析一下以下代碼段中的變量,瀏覽器如何做解碼?如果你真的理解了瀏覽器的解碼過程,你何嘗不知道你在解決XSS問題時(shí)的編碼過程? 請(qǐng)?jiān)谠u(píng)論中回復(fù),我會(huì)及時(shí)與您討論:

)” >click jiayzhan

說明:backToHome是一個(gè)javascript函數(shù)

在這里先不說它的解碼過程,提示一下它是一個(gè)三維解碼過程,供讀者討論吧。

寫到這里,我想點(diǎn)睛一下我上文所述的”許多公司已經(jīng)90%以上的程度解決了XSS問題”而不是100%的原因了。本ID曾給某一知名公司報(bào)了一個(gè) XSS問題,其存在XSS問題的地方因?yàn)槭且粋(gè)三維的解碼語(yǔ)法環(huán)境,應(yīng)用安全與開發(fā)人員許久也沒有找到合理的解決方案,最終此公司刪除了那個(gè)有XSS問題的功能點(diǎn)。不點(diǎn)名了,如果有幸遇到此公司的應(yīng)用安全人員,這篇文章讀明白了,問題應(yīng)該就好解決了。還是那句話:知識(shí)與知識(shí)運(yùn)用相隔甚遠(yuǎn),我無法保證您可以正確運(yùn)用它。

既然知道瀏覽器是如何解碼的了,我們?cè)撊绾巫鼍幋a的事應(yīng)該水到渠成了,不過依我的經(jīng)驗(yàn)看,許多專業(yè)做XSS問題fix的解決方案的安全人員依然存在難以轉(zhuǎn)過這個(gè)彎的情況。下篇文章我將舉幾個(gè)具體的例子來說明如何利用解碼原理用來徹底解決XSS問題的編碼問題,以及在涉及到多重解碼的環(huán)境如果考慮維數(shù)不足所帶來的安全隱患是什么(透露一下:如果編碼維數(shù)考慮不足的可能結(jié)果是:

1). 其實(shí)等于沒解決,只是漏洞發(fā)現(xiàn)的難度大了一些而已,對(duì)于我來說都一樣

2). 改變了用戶的輸入,比如:用戶想找一個(gè)【“】,結(jié)果系統(tǒng)幫它找的是【"】或【%22】或【"】......)。

今天先這樣吧,純技術(shù)文章,不知道有多少同行會(huì)耐心的閱讀它。

[責(zé)任編輯:袁家駒]
在這個(gè)大數(shù)據(jù)的時(shí)代,數(shù)據(jù)庫(kù)軟件需要應(yīng)對(duì)當(dāng)前企業(yè)里不同來源的海量數(shù)據(jù),并將這些不同結(jié)構(gòu)的數(shù)據(jù)進(jìn)行整合,進(jìn)一步實(shí)時(shí)進(jìn)行數(shù)據(jù)挖掘和分析。所以主打ERP軟件的SAP公司肯定也會(huì)做出應(yīng)對(duì)高性能的大數(shù)據(jù)分析軟件來滿足這一巨大的市場(chǎng)需要。
官方微信
weixin
精彩專題更多
存儲(chǔ)風(fēng)云榜”是由DOIT傳媒主辦的年度大型活動(dòng);仡2014年,存儲(chǔ)作為IT系統(tǒng)架構(gòu)中最基礎(chǔ)的元素,已經(jīng)成為了推動(dòng)信息產(chǎn)業(yè)發(fā)展的核心動(dòng)力,存儲(chǔ)產(chǎn)業(yè)的發(fā)展邁向成熟,數(shù)據(jù)經(jīng)濟(jì)的概念順勢(shì)而為的提出。
華為OceanStor V3系列存儲(chǔ)系統(tǒng)是面向企業(yè)級(jí)應(yīng)用的新一代統(tǒng)一存儲(chǔ)產(chǎn)品。在功能、性能、效率、可靠性和易用性上都達(dá)到業(yè)界領(lǐng)先水平,很好的滿足了大型數(shù)據(jù)庫(kù)OLTP/OLAP、文件共享、云計(jì)算等各種應(yīng)用下的數(shù)據(jù)存儲(chǔ)需求。
聯(lián)想攜ThinkServer+System+七大行業(yè)解決方案驚艷第十六屆高交會(huì)
 

公司簡(jiǎn)介 | 媒體優(yōu)勢(shì) | 廣告服務(wù) | 客戶寄語(yǔ) | DOIT歷程 | 誠(chéng)聘英才 | 聯(lián)系我們 | 會(huì)員注冊(cè) | 訂閱中心

Copyright © 2013 DOIT Media, All rights Reserved. 北京楚科信息技術(shù)有限公司 版權(quán)所有.