0x00 漏洞背景
Cookie Secure,是設置COOKIE時,可以設置的一個屬性,設置了這個屬性後,只有在https訪問時,瀏覽器纔會發送該COOKIE。
瀏覽器默認只要使用http請求一個站點,就會發送明文cookie,如果網絡中有監控,可能被截獲。
如果web應用網站全站是https的,可以設置cookie加上Secure屬性,這樣瀏覽器就只會在https訪問時,發送cookie。
攻擊者即使竊聽網絡,也無法獲取用戶明文cookie。
0x01 修復思路
設置cookie時,加入屬性httponly,但需要注意幾點問題:
1、在cookie類中沒有找到設置httponly的方法,目前的jdk版本只支持在setHeader時,設置httponly。
2、httponly已經可以防止用戶cookie被竊取,只能增加攻擊者的難度,不能達到完全防禦XSS攻擊。
0x02 代碼修復
在設置認證COOKIE時,加入Secure。參考代碼:
response.setHeader("SET-COOKIE", "user=" + request.getParameter("cookie") + "; HttpOnly ; Secure ");
服務器配置爲HTTPS SSL方式
Servlet 3.0 (Java EE 6)的web.xml 進行如下配置:
<session-config>
<cookie-config>
<secure>true</secure>
</cookie-config>
</session-config>
ASP.NET的Web.config中進行如下配置:
<httpCookies requireSSL="true" />
php.ini中進行如下配置
session.cookie_secure = True
weblogic中進行如下配置:
<wls:session-descriptor>
<wls:cookie-secure>true</wls:cookie-secure>
<wls:cookie-http-only>true</wls:cookie-http-only>
</wls:session-descriptor>