寫這篇的目的是,今天在重新學習javascript時發現了HttpOnly這個標簽,所以專門的mark了下。 誰在什麼時候發明瞭HttpOnly 2002年微軟為ie6的sp1創造了HttpOnly 什麼是HttpOnly HttpOnly是包含在http返回頭Set-Cookie裡面的一個附加的f ...
寫這篇的目的是,今天在重新學習javascript時發現了HttpOnly這個標簽,所以專門的mark了下。
誰在什麼時候發明瞭HttpOnly
2002年微軟為ie6的sp1創造了HttpOnly
什麼是HttpOnly
HttpOnly是包含在http返回頭Set-Cookie裡面的一個附加的flag,所以它是後端伺服器對cookie設置的一個附加的屬性,在生成cookie時使用HttpOnly標誌有助於減輕客戶端腳本訪問受保護cookie的風險(如果瀏覽器支持的話)
下麵的例子展示瞭如何設置Set-Cookie 返回頭的語法
Set-Cookie: <name>=<value>[; <Max-Age>=<age>]
[; expires=<date>][; domain=<domain_name>]
[; path=<some_path>][; secure][; HttpOnly]
如果HTTP響應標頭中包含HttpOnly標誌(可選),客戶端腳本將無法訪問cookie(如果瀏覽器支持該標誌的話)。因此即使客戶端存在跨站點腳本(XSS)漏洞,瀏覽器也不會將Cookie透露給第三方。
如果瀏覽器不支持HttpOnly,並且後端伺服器嘗試設置HttpOnly cookie,瀏覽器也會忽略HttpOnly標誌,從而創建傳統的,腳本可訪問的cookie。那麼該cookie(通常是會話cookie)容易受到XSS攻擊
使用HttpOnly緩解最常見的XSS攻擊
大多數XSS攻擊都是針對會話cookie的盜竊。後端伺服器可以通過在其創建的cookie上設置HttpOnly標誌來幫助緩解此問題,這表明該cookie在客戶端上不可訪問。
如果支持HttpOnly的瀏覽器檢測到包含HttpOnly標誌的cookie,並且客戶端腳本代碼嘗試讀取該cookie,則瀏覽器將返回一個空字元串作為結果。這會通過阻止惡意代碼(通常是XSS)將數據發送到攻擊者的網站來使攻擊失敗。
java伺服器設置HttpOnly
自從採用Java Servlet 3.0之上的容器,很容易在cookie上設置HttpOnly標誌。實際上,setHttpOnly和isHttpOnly方法可在Cookie介面中使用,如下
Cookie cookie = getMyCookie("myCookieName");
cookie.setHttpOnly(true);
在WEB-INF/web.xml的設置如下
<session-config>
<cookie-config>
<http-only>true</http-only>
</cookie-config>
</session-config>
努力地向月光下的影子——駭客靠攏!!! 黎明之花,待時綻放