将cookie設置成HttpOnly是爲了(le)防止XSS攻擊,竊取cookie内容,這(zhè)樣就增加了(le)cookie的(de)安全性,即便是這(zhè)樣,也(yě)不要将重要信息存入cookie。
如何在Java中設置cookie是HttpOnly呢(ne)?
Servlet 2.5 API 不支持 cookie設置HttpOnly
http://docs.oracle.com/cd/E17802_01/products/products/servlet/2.5/docs/servlet-2_5-mr2/
建議(yì)升級Tomcat7.0,它已經實現了(le)Servlet3.0
http://tomcat.apache.org/tomcat-7.0-doc/servletapi/javax/servlet/http/Cookie.html
但一般不是能随意升級系統的(de)。
那就介紹另外一種辦法:
利用(yòng)HttpResponse的(de)addHeader方法,設置Set-Cookie的(de)值
cookie字符串的(de)格式:key=value; Expires=date(或Max-Age=毫秒數); Path=path; Domain=domain; Secure; HttpOnly
//設置cookie
response.addHeader("Set-Cookie", "uid=112; Path=/; HttpOnly");
//設置多(duō)個(gè)cookie
response.addHeader("Set-Cookie", "uid=112; Path=/; HttpOnly");
response.addHeader("Set-Cookie", "timeout=30; Path=/test; HttpOnly");
//設置https的(de)cookie
response.addHeader("Set-Cookie", "uid=112; Path=/; Secure; HttpOnly");
目前主流的(de)WEB服務器,均應有設置cookie的(de)HttpOnly的(de)方法。一般默認HttpOnly沒有開啓,隻需開啓即可(kě)。
下(xià)面以Resin服務器爲例,設置cookie的(de)HttpOnly參數的(de)方法爲:
1、Resin3.1.X服務器,用(yòng)文本編輯器打開resin.conf,找到:
<!--
- For security, set the HttpOnly flag in cookies.
- <cookie-http-only/>
-->
可(kě)以看出cookie-http-only被引去,打開即可(kě)。
2、Resin4.0.X,用(yòng)文本編輯器打開resin.xml
參照(zhào)如下(xià)格式,添加cookie-http-only到你的(de)虛拟主機配置中即可(kě)(軟件默認配置文檔沒有<cookie-http-only>參數,自行增加即可(kě),具體參考官方文檔):
<resin xmlns="http://caucho.com/ns/resin">
<cluster id="">
<host id="www.foo.com">
<web-app id="" root-directory="/var/resin/foo">
<cookie-http-only>true</cookie-http-only>
<web-app id="">
</host>
......
</cluster>
</resin>
|