HttpOnly是怎麼回事?
最近配合公司安全團隊開展一些工作,安全團隊建議,內部系統(使用者端系統有跨域需求,其他方式解決更合適)對接SSO建議開啟HttpOnly。HttpOnly?沒聽說過,趕緊百度一下。
一、什麼是HttpOnly
根據Jordan Wiens一篇部落格《No cookie for you!》記載,HttpOnly cookie最初是由Microsoft Internet Explorer開發人員於2002年在Internet Explorer 6 SP1的版本中實現。
微軟開發者網站介紹,HttpOnly是Set-Cookie HTTP響應頭中包含的附加標誌。生成cookie時使用HttpOnly標誌有助於降低客戶端指令碼訪問受保護cookie的風險(如果瀏覽器支援它)。
以下示例顯示了HTTP響應標頭中使用的語法
如果HTTP響應頭中包含HttpOnly標誌,只要瀏覽器支援HttpOnly標誌,客戶端指令碼就無法訪問cookie。因此,即使存在跨站點指令碼(XSS)缺陷,且使用者意外訪問利用此漏洞的連結,瀏覽器也不會向第三方透露cookie。
如果瀏覽器不支援HttpOnly並且網站嘗試設定HttpOnly cookie,瀏覽器會忽略HttpOnly標誌,從而建立一個傳統的,指令碼可訪問的cookie。
二、使用HttpOnly減輕最常見的XSS攻擊
根據微軟Secure Windows Initiative小組的高階安全專案經理Michael Howard的說法,大多數XSS攻擊的目的都是盜竊cookie。服務端可以透過在它建立的cookie上設定HttpOnly標誌來緩解這個問題,指出不應在客戶端上訪問cookie。
客戶端指令碼程式碼嘗試讀取包含HttpOnly標誌的cookie,如果瀏覽器支援HttpOnly,則返回一個空字串作為結果。這樣能夠阻止惡意程式碼(通常是XSS攻擊)將cookie資料發到攻擊者網站。
三、透過Java設定HttpOnly
自Java Enterprise Edition 6(JavaEE 6)採用Java Servlet 3.0技術以來,程式設計上很容易在cookie上設定HttpOnly標誌。
事實上,Cookie有兩個方法setHttpOnly和isHttpOnly,cookie(JSESSIONID)也有。
此外,JavaEE 6開始,也可以透過配置檔案WEB-INF/web.xml來配置HttpOnly
對於JavaEE 6之前的Java Enterprise Edition版本,常見的解決方法是使用顯式附加HttpOnly標誌的會話cookie值覆蓋SET-COOKIE HTTP響應頭
粗暴覆蓋並不好,因為JSESSIONID可能已經設定了其他標誌。更好的解決方法是處理先前設定的標誌。實際上,SecurityWrapperResponse 的addCookie方法可以解決這個問題。我們可以編寫一個servlet過濾器
一些實現JavaEE 5的Web應用程式伺服器和實現Java Servlet 2.5(JavaEE 5的一部分)的servlet容器也允許建立HttpOnly會話cookie
例如Tomcat 6可以在context.xml檔案中進行如下設定
四、用好Web應用防火牆
如果程式碼更改不可行或成本太高,可以使用Web應用程式防火牆將HttpOnly新增到會話cookie
Mod_security - using SecRule and Header directives
ESAPI WAF - using add-http-only-flag directive
支援HttpOnly的主流瀏覽器有哪些呢?谷歌了一下,常見的瀏覽器都支援。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31556438/viewspace-2557286/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 什麼是 cookie 的 httponly 屬性CookieHTTP
- DNS快取中毒是怎麼回事?DNS快取
- packagereference 裡面的資產是怎麼回事?Package
- ”三魂七魄”是怎麼回事
- 自媒體+雲桌面是怎麼回事兒
- Unreal 各種指標型別是怎麼回事Unreal指標型別
- 域名暫停解析是怎麼回事?如何恢復解析?
- 【Java面試】請談談AQS是怎麼回事兒?Java面試AQS
- Python 數值中的下劃線是怎麼回事?Python
- 執行緒池是怎麼回事(附面試題)執行緒面試題
- ot 這個蛋疼的快取是怎麼回事快取
- C#非同步程式設計是怎麼回事(番外)C#非同步程式設計
- 更改授權後選單不顯示是怎麼回事?
- 軟體開發和產品經理是怎麼回事
- SSL證書出錯是怎麼回事?是由哪些原因導致的?
- DNS劫持是怎麼回事?DNS劫持如何預防?(國科雲)DNS
- 換Macbook M1晶片之後,IDEA很卡是怎麼回事?Mac晶片Idea
- 聊一聊 C# 後臺GC 到底是怎麼回事?C#GC
- 用虛擬主機 網站被暫停了是怎麼回事?網站
- 訊息認證碼是怎麼一回事?
- win10 雪破圖怎麼解決_win10雪破圖是怎麼回事Win10
- Event Loop 原來是這麼回事OOP
- 溼式電除塵器除塵效率低是怎麼回事MCF
- 小遊戲使用者來源中的“其他”是怎麼回事?遊戲
- Spring的許可權控制是怎麼一回事?Spring
- 雲伺服器開啟寶塔皮膚失敗是怎麼回事?伺服器
- 2024-07-18 code標籤渲染時會多出空格是怎麼回事?
- 執行計劃沒變,執行時快時慢是怎麼回事?
- 《密碼學系列》|| 密碼學中的流密碼是怎麼回事?密碼學
- 四、聊聊併發 - 看完你應該就明白synchronized是怎麼回事了synchronized
- 一起看下MySQL的崩潰恢復到底是怎麼回事MySql
- Cookie HttpOnly 屬性CookieHTTP
- cookie Secure與HttpOnlyCookieHTTP
- ThreadLocal記憶體洩漏怎麼回事thread記憶體
- 網頁伺服器無響應怎麼回事?怎麼辦?網頁伺服器
- 京東CLO隆雨離職是怎麼回事?京東CLO隆雨離職原因是什麼
- windows10資源管理器刪除不了檔案是怎麼回事Windows
- 印表機不列印是怎麼回事 印表機不印表機的解決方法