探秘Servlet 3.0中的Web安全改進(jìn)
原創(chuàng)【51CTO獨(dú)家特稿】Servlet 3.0最為最新的Servlet最新標(biāo)準(zhǔn),其提供了很多新特性,比如異步請(qǐng)求處理、聲明式語法支持等。在這里我們將考察Servlet 3.0安全方面的增強(qiáng)。
對(duì)網(wǎng)站進(jìn)行跨站攻擊最常用的一個(gè)手段就是在網(wǎng)頁中插入惡意的Html和JavaScript代碼。一旦你的網(wǎng)頁被增加這些惡意代碼,那么就非常容易泄流你的個(gè)人信息,比如Cookie。
Cookie作為保留會(huì)話狀態(tài)的手段,經(jīng)常被用來保存用戶登錄信息等敏感性數(shù)據(jù),但是由于Cookie既可以在服務(wù)器端讀取,又可以在客戶端通過腳本讀取,則導(dǎo)致其成為Web應(yīng)用安全的一個(gè)薄弱環(huán)節(jié)。
在2002年,微軟采用了一種被稱為“HttpOnly Cookies”的技術(shù),來防止惡意讀取Cookie信息。該技術(shù)實(shí)際并不復(fù)雜,只是在Cookie上增加一個(gè)額外的屬性,在瀏覽器支持的情況下,如果嘗試通過腳本讀取Cookie內(nèi)容,返回結(jié)果將為空?,F(xiàn)在大多數(shù)服務(wù)器和客戶端都采用的是這種技術(shù),當(dāng)然瀏覽對(duì)對(duì)XMLHttpRequest對(duì)象進(jìn)行了特殊處理。
在Servlet 3.0規(guī)范中,Java Servlet開始支持“HttpOnly Cookies”。當(dāng)使用HttpServletResponse的addCookie方法,向?yàn)g覽器提供Cookie的時(shí)候,可以通過Cookie對(duì)象的setHttpOnly方法指定Cookie為HttpOnly。例如:
- Cookie cooki=new Cookie("user_name","guandeliang");
- cooki.setMaxAge(60*60*24*365);
- cooki.setPath("/");
- cooki.setHttpOnly(true);
- response.addCookie(cooki);
另外,如果希望判斷一個(gè)Cookie對(duì)象是否是HttpOnly,可以通過調(diào)用該對(duì)象的isHttpOnly()進(jìn)行判斷。
【編輯推薦】