cookie设置(Cookie设置HttpOnly属性)
一、如何为cookie设置HttpOnly
将cookie设置成HttpOnly是为了防止XSS攻击,窃取cookie内容,这样就增加了cookie的安全性,即便是这样,也不要将重要信息存入cookie。
如何在Java中设置cookie是HttpOnly呢?
Servlet 2.5 API不支持 cookie设置HttpOnly
建议升级Tomcat7.0,它已经实现了Servlet3.0
但是苦逼的是现实是,老板是不会让你升级的。
那就介绍另外一种办法:
利用HttpResponse的addHeader方法,设置Set-Cookie的值
cookie字符串的格式:key=value; Expires=date; Path=path; Domain=domain; Secure; HttpOnly
//设置cookie
response.addHeader("Set-Cookie","uid=112; Path=/; HttpOnly");
//设置多个cookie
response.addHeader("Set-Cookie","uid=112; Path=/; HttpOnly");
response.addHeader("Set-Cookie","timeout=30; Path=/test; HttpOnly");
//设置https的cookie
response.addHeader("Set-Cookie","uid=112; Path=/; Secure; HttpOnly");
在实际使用中,我们可以使FireCookie查看我们设置的Cookie是否是HttpOnly
二、cookie的httponly属性为true说明
只有在http请求头中会带有此cookie的信息。cookie的属性和属性的作用中,若此属性为true,则只有在http请求头中会带有此cookie的信息,而不能通过document.cookie来访问此cookie。Cookie,有时也用其复数形式Cookies。类型为“小型文本文件”,是某些网站为了辨别用户身份,进行Session跟踪而储存在用户本地终端上的数据(通常经过加密),由用户客户端计算机暂时或永久保存的信息。
三、如何在ASP中 给Cookies设置HttpOnly属性
Asp操作Cookies(设置[赋值]、读取、删除[设置过期时间])
Response.Cookies("letwego")("visiter")="84ww"'赋值
Response.Cookies("letwego").Expires=(now()+7)'设置过期时间(7天)
userName=Request.Cookies("letwego")("visiter")'取Cookies
Response.Cookies("letwego").Expires=(now()-1)'删除Cookies,设置过期时间(-1天)
'dateadd("n",30,now())得到分钟
'dateadd("S",30,now())得到秒
一、读取
Response.Cookies("visiter")="aaa"
a=Request.Cookies("visiter")
Response.Cookies("letwego")("visiter")="aaa"
a=Request.Cookies("letwego")("visiter")
二、设置过期时间
Response.Cookies("visiter").expires=dateadd("H",8,now())'表示Cookies保存8小时
Response.Cookies("user_name").Expires=Date+1'指定cookie保存时间
保留COOKIES一个小时
Response.Cookies("MyCookie").Expires=(now()+1/24)
Response.Cookies("MyCookie").Expires= DateAdd("h", 1, Now())
Response.Cookies("CookieName").Expires=DateAdd("m",60,now())
设置60个月以后过期
Response.Cookies("User").expires=second()+7
在expires后面定义的时间可以用时间函数代替
例如:date()+7就表示在今天的时间上加上7天,而second()+7则是7秒了。
Response.Cookies("字段名").expires=时间函数+N,例如:
Response.Cookies("name2").expires=date+1,表示Cookies保存1天,再比如:
Response.Cookies("name2").expires=Hour+8,表示Cookies保存8小时。
这种方法我测试过不行(在2003server,iis6.0中),不管second后面有无加(),访问时会出现500错误(还是无法显示网页?忘了)。
织梦尤文:这里的时间累加建议还是使用DateAdd函数,比如我们要累加一小时,则使用:
Response.Cookies("baidooglecom").expires= DateAdd("h", 1, Now())
30分钟:
Response.Cookies("CookieName").Expires=DateAdd("n",30,now())
dateadd("S",30,now())得到秒
Expires指定 cookie的过期日期。为了在会话结束后将 cookie存储在客户端磁盘上,或在许多时候,我们希望能更长时间地在访问者的计算机上保存cookie。必须设置该日期。
若此项属性的设置未超过当前日期,则在任务结束后 cookie将到期。
cookie的使用到期时间为“2010年1月1日”: Response.Cookies("CookieName").Expires=#January 01, 2010#
cookie的过期时间为“cookie的创建时间+365天”:Response.Cookies("CookieName").Expires=Date+365推荐的
但最好不要随便写 Response.Cookies("CookieName").Expires=Date,这样页面之间的调用时值会为空。
-----------------------------------------------------------------------------------------------------------------------
在asp中,我们可以用response.cookies方法,定义cookies的值。方法如下:
response.cookies(cookiesname)[(key)|.attribute]=value
解释如下:cookiesname是你想要的cookies的名字,比如:test
参数key:可选参数,当然,不指定也可以了。:)
key用于指定词典式cookie的了cookie的名称。我的理解似乎与一个数组类似。
参数attribute可选,指定cookie本身的相关信息,比如指定特定的网址、路径、有效期等。
可选的值有:Domain只能读取特定域名的cookie
Expires cookie的有效期限
Haskeys是否含有子cookie
Path只能在指定路径上读取Cookie
Secure指定cookie是否加密
比如,要在本网站指定名为naxizu的cookie,方法如下:
Response.Cookies("naxizu").Domain=""‘指定访问
Response.Cookies("naxizu").Path="E-Blog"'指定E-Blog目录访问
Response.Cookies("naxizu").Expires= DateAdd("d",2,date)'指定两天后过期
Response.Cookies("naxizu")("name")="测试"
Response.Cookies("naxizu")("type")="呵呵"
上面这两句就是制作了一个词典式的cookie。
关于Haskeys的用法,相当简单,request.Cookies(cookie).Haskeys就可以了,比如要判断一个cookies是否为词典式,就可以写成
<%
If Request.Cookies("naxizu").Haskeys Then
Response.Write"这是一个词典式的Cookies"
Else
Response.Write"这不是一个词典式的Cookies"
End If
%>
参考下。