標籤:
Http是無狀態的,http是不會為了下一次串連而維護這次串連所傳輸的資訊的。所以為了在每次會話之間傳遞資訊,就需要用到cookie和session,很多時候都是在cookie中儲存一個sessionID,伺服器來識別該使用者,那麼安全隱患也就引申而出了,只要獲得這個cookie,就可以取得別人的身份,特別是管理員等進階許可權帳號時,危害就大了,而XSS就是在別人的應用程式中惡意執行一段JS以竊取使用者的cookie。
在瀏覽器中的document對象中,就儲存了Cookie的資訊,而利用js可以把這裡面的Cookie給取出來,只要得到這個Cookie就可以擁有別人的身份了。
如何保障我們的Cookie安全呢?Cookie都是通過document對象擷取的,我們如果能讓cookie在瀏覽器中不可見就可以了,那HttpOnly就是在設定cookie時接受這樣一個參數,一旦被設定,在瀏覽器的document對象中就看不到cookie了。而瀏覽器在瀏覽網頁的時候不受任何影響,因為Cookie會被放在瀏覽器頭中發送出去(包括Ajax的時候),應用程式也一般不會在JS裡操作這些敏感Cookie的,對於一些敏感的Cookie我們採用HttpOnly,對於一些需要在應用程式中用JS操作的cookie我們就不予設定,這樣就保障了Cookie資訊的安全也保證了應用。
給瀏覽器設定Cookie的頭如下:
Set-Cookie: =[; =]
[; expires=][; domain=]
[; path=][; secure][; HttpOnly]
如果 Cookie 具有 HttpOnly 特性且不能通過用戶端指令碼訪問,則為 true;否則為 false。預設值為 false。
HttpOnly在IE 6以上,Firefox較新版本都得到了比較好的支援,並且在如Hotmail等應用程式裡都有廣泛的使用,並且已經是取得了比較好的安全效果。
HttpOnly 主要是為了限制web頁面程式的browser端script程式讀取cookie, 實際是瀏覽器通過協議實現限制的,駭客可不會那麼傻,肯定不會用HTTP協議來讀取cookie,肯定是在socket層面寫抓包程式,相當於寫一個低於IE6版本的應用程式。
所以,HttpOnly並不是萬能的。
使用HttpOnly提升Cookie安全性