什么是HttpOnly?
微軟公司的Internet Explorer 6 SP1引入了一項新的特性。這個特性是為Cookie提供了一個新屬性,用以阻止客戶端腳本訪問Cookie。
如果cookie中設置了HttpOnly屬性,那么通過js腳本將無法讀取到cookie信息,這樣能有效的防止XSS攻擊,竊取cookie內容,這樣就增加了cookie的安全性。
HttpOnly的用法
Set-Cookie: =[; =] [; expires=][; domain=] [; path=][; secure][; HttpOnly]
屬性含義:
1 secure屬性
當設置為true時,表示創建的 Cookie 會被以安全的形式向服務器傳輸,也就是只能在 HTTPS 連接中被瀏覽器傳遞到服務器端進行會話驗證,如果是 HTTP 連接則不會傳遞該信息,所以不會被竊取到Cookie 的具體內容。
2 HttpOnly屬性
如果在Cookie中設置了"HttpOnly"屬性,那么通過程序(JS腳本、Applet等)將無法讀取到Cookie信息,這樣能有效的防止XSS攻擊。
即使應答頭中含有HttpOnly屬性,當用戶瀏覽有效域中的站點時,這個cookie仍會被自動發送。但是,卻不能夠在Internet Explorer 6 SP1中使用腳本來訪問該cookie,即使起初建立該cookie的那個Web 站點也不例外。這意味着,即使存在跨站點腳本攻擊缺陷,並且用戶被騙點擊了利用該漏洞的鏈接,Internet Explorer也不會將該cookie發送給任何第三方。這樣的話,就保證了信息的安全。
注意,為了降低跨站點腳本攻擊帶來的損害,通常需要將HTTP-only Cookie和其他技術組合使用。如果單獨使用的話,它無法全面抵御跨站點腳本攻擊。
支持HTTP-only Cookie的瀏覽器
如果Web 站點為不支持HTTP-only Cookie的瀏覽器建立了一個HTTP-only cookie的話,那么該cookie不是被忽略就是被降級為普通的可以通過腳本訪問的cookie。這還是會導致信息容易被泄露。
對於公司內部網中的web頁面,管理員可以要求所有用戶都是由支持HTTP-only Cookie的瀏覽器,這樣能保證信息不會由於跨站點腳本攻擊缺陷而泄露。
對於公共Web 站點,由於需要支持各種各樣的瀏覽器,這時可以考慮使用客戶端腳本來確定不同訪問者所使用的瀏覽器的版本。Web 站點可以通過向支持~的瀏覽器發送敏感信息以減輕跨站點腳本攻擊對Cookie的威脅。對於那些使用不支持HTTP-only Cookie的瀏覽器的訪問者,可以限制為其提供的信息或功能,並要求升級他們的軟件。
當確定Internet Explorer的版本時,重要的是記住Internet Explorer 6 SP1 的用戶代理字符串跟Internet Explorer 6的用戶代理字符串是一樣的。客戶端腳本還必須使用navigator對象的appMinorVersion屬性檢測主版本號,這樣才能確定出客戶端是否安裝了Internet Explorer 6 SP1。
參考資源:https://blog.csdn.net/Sunnyyou2011/article/details/80265477