Cookie 的 HttpOnly 和 Secure 屬性作用 (轉(zhuǎn)載)
今天和總監(jiān)寨蹋、同事又討論起關(guān)于Session共享的解決方案問(wèn)題梭纹,討論到因?yàn)門omcat自帶的Session機(jī)制在集群時(shí)難以做到真正的集群蛛株。因?yàn)槭褂肨omcat自帶的Session機(jī)制,難以做到在集群中節(jié)點(diǎn)共享,一般是通過(guò)Nginx反向代理使用Hash征唬、固定IP等解決方案,并不能避免單節(jié)點(diǎn)崩潰時(shí)不能繼續(xù)提供服務(wù)的問(wèn)題茁彭。雖然這種可以解決壓力的問(wèn)題总寒,但是當(dāng)一直為某IP或通過(guò)Hash來(lái)分配服務(wù)的某臺(tái)服務(wù)器掛了,則它負(fù)責(zé)服務(wù)的客戶就都訪問(wèn)不了了(Session失效理肺,只能重新調(diào)度分配到其他服務(wù)器摄闸,這時(shí)要重新生成會(huì)話)。討論到的可用的解決方案是Cookie + Redis妹萨,然后又討論了Cookie的安全性問(wèn)題年枕。然后同事問(wèn)了下HttpOnly這個(gè)在瀏覽器里打勾的作用,然后自己按以前了解到的資料來(lái)回答了一下乎完,大概是說(shuō):不能通過(guò)Javascript來(lái)修改帶有HttpOnly屬性的Cookie熏兄,只能通過(guò)服務(wù)器來(lái)修改。但是看到總監(jiān)卻可以通過(guò)JS來(lái)修改帶有HttpOnly屬性的Cookie树姨,這讓我產(chǎn)生了懷疑自己的正確性摩桶。
document.cookie
不過(guò)還好,事后向總監(jiān)確認(rèn)了一下帽揪,原來(lái)他是通過(guò)刪除舊的帶有HttpOnly屬性的Cookie硝清,然后才用JS添加一個(gè)同名同值沒(méi)有HttpOnly屬性來(lái)測(cè)試。所以转晰,我之前說(shuō)的大概是對(duì)的芦拿,但是不夠系統(tǒng),所以再次查了下資料來(lái)系統(tǒng)整理一下查邢,與君分享防嗡。
下面兩個(gè)屬性都屬于Cookie安全方面考慮的。這要視瀏覽器或服務(wù)端有沒(méi)有支持侠坎。
Secure
Cookie的Secure屬性,意味著保持Cookie通信只限于加密傳輸裙盾,指示瀏覽器僅僅在通過(guò)安全/加密連接才能使用該Cookie实胸。如果一個(gè)Web服務(wù)器從一個(gè)非安全連接里設(shè)置了一個(gè)帶有secure屬性的Cookie,當(dāng)Cookie被發(fā)送到客戶端時(shí)番官,它仍然能通過(guò)中間人攻擊來(lái)攔截庐完。
HttpOnly
Cookie的HttpOnly屬性,指示瀏覽器不要在除HTTP(和 HTTPS)請(qǐng)求之外暴露Cookie徘熔。一個(gè)有HttpOnly屬性的Cookie门躯,不能通過(guò)非HTTP方式來(lái)訪問(wèn),例如通過(guò)調(diào)用JavaScript(例如酷师,引用document.cookie)讶凉,因此染乌,不可能通過(guò)跨域腳本(一種非常普通的攻擊技術(shù))來(lái)偷走這種Cookie。尤其是Facebook 和 Google 正在廣泛地使用HttpOnly屬性懂讯。
XSS是跨站腳本攻擊的縮寫荷憋,是一種網(wǎng)站應(yīng)用程序的安全漏洞攻擊,是代碼注入的一種褐望。 通常是通過(guò)利用網(wǎng)頁(yè)開發(fā)時(shí)留下的漏洞勒庄,通過(guò)巧妙的方法注入惡意指令代碼到網(wǎng)頁(yè),使用戶加載并執(zhí)行攻擊者惡意制造的網(wǎng)頁(yè)程序瘫里。
防范
記住一句至理名言——“所有用戶輸入都是不可信的实蔽。”(注意: 攻擊代碼不一定在中)
鏈接:http://www.imooc.com/article/13553?block_id=tuijian_wz