将cookie設置成HttpOnly是(shì)為(wèi)了(€♣™le)防止XSS攻擊,竊取cookie內(nèi)容,這(zhè)樣就(ji'®ù)增加了(le)cookie的(de)安全性,即便是(shì)這(z∞ ₩hè)樣,也(yě)不(bù)要(yào)将重要(yào)信息存入co©Ωβokie。
如(rú)何在Java中設置c↕§ookie是(shì)HttpOnly呢(n≤≠$e)?
Servlet 2.5 API 不(bù)支持 cookie設置H≥™∞ttpOnly
http://docs.oracle.com/cd/E1780¥Ω2_01/products/products/serv®•let/2.5/docs/servlet-2_5-mr2/
建議(yì)升級Tomcat7.0,它已經實現(xiàn)了(le)♦&Servlet3.0
http://tomcat.apache.org/tomcat-7.0-d✔ φoc/servletapi/javax/servlet/h→δ∑ttp/Cookie.html
但(dàn)一(yī)般不(bù)是(shì)能(néng)随意↔升級系統的(de)。
那(nà)就(jiù)介紹另外(wài)一(yī)種辦法:♣±
利用(yòng)HttpResponse的(de)add€δ<Header方法,設置Set-Cookie的(de)值
cookie字符串的(de)格式:key=valu←¥α☆e; Expires=date(或Max-Age=毫秒(miα↔₩ǎo)數(shù)); Path=path; Domain=domai★↓∏n; Secure; HttpOnly
//設置cookie
response.addHeader("Set-Cookie", "u≤♦±♠id=112; Path=/; HttpOnly");
//設置多(duō)個(gè)cooki×§'e
response.addHeader("Set-Cook&™π¶ie", "uid=112; Path=/; Hβγ>ttpOnly");
response.addHeader("Set-Cookieγ≥≤", "timeout=30; Path=/test; Http""Only");
//設置https的(de)cookie
response.addHeader("Set-Cookie", "uid=1₹↓12; Path=/; Secure; HttpOnly");
目前主流的(de)WEB服務器(qì),均應有(yǒu)設置coo©≈→kie的(de)HttpOnly的(de)方♠₽εφ法。一(yī)般默認HttpOnly沒有(yǒu)開(k★>āi)啓,隻需開(kāi)啓即可(kě)。
下(xià)面以Resin服務器(qì)為(wèi)例,設✘∑♣置cookie的(de)HttpOnly參數(shù)的(dσ♦e)方法為(wèi):
1、Resin3.1.X服務器(qì),用(yòng)文(↑"✔wén)本編輯器(qì)打開(kāi)resin.con∏α₹f,找到(dào):
<!--
- Fo₽π®r security, set the HttpOnly flag β&§♣in cookies.
-≠'↔§ <cookie-http-only/>≈→
-->
可(kě)以看(kàn)出cookie-http-only被£★引去(qù),打開(kāi)即可(kě)。
2、Resin4.0.X,用(yòng)文(wén)本編輯器(qì)打開(k ↔×āi)resin.xml
參照(zhào)如(rú)下(xià)格式,添加cooki§¶₩e-http-only到(dào)你(nǐ)的(de&)虛拟主機(jī)配置中即可(kě)(軟件(jiàn∞∑<)默認配置文(wén)檔沒有(yǒu)<cookie-http-only>參數(shù),自(zì)行(xíng)增加即可(kě),具體(tǐ)參考官©₹>方文(wén)檔):
<resin xmlns="http://caucho.com/≈δφ£ns/resin">
<cluster id="">
<host id="www.foo.com">
<web-app id="" r∞£&oot-directory="/var/resin/foo">&nbsδ♥ p;
<cookie-http-only>trδλue</cookie-http-only>
<web-app id="">
</host>
......
</cluster>
</resin>
|