Java EE 6.0 的 Cookie 类已经有设置 HttpOnly 的方法

红薯 发布于 2012/10/08 16:19
阅读 21K+
收藏 75

一般的Cookie都是从document对象中获得的,现在浏览器在设置 Cookie的时候一般都接受一个叫做HttpOnly的参数,跟domain等其他参数一样,一旦这个HttpOnly被设置,你在浏览器的 document对象中就看不到Cookie了,而浏览器在浏览的时候不受任何影响,因为Cookie会被放在浏览器头中发送出去(包括ajax的时 候),应用程序也一般不会在js里操作这些敏感Cookie的,对于一些敏感的Cookie我们采用HttpOnly,对于一些需要在应用程序中用js操作的cookie我们就不予设置,这样就保障了Cookie信息的安全也保证了应用。

如果你正在使用的是兼容 Java EE 6.0 的容器,如 Tomcat 7,那么 Cookie 类已经有了 setHttpOnly 的方法来使用 HttpOnly 的 Cookie 属性了。

cookie.setHttpOnly(true);

设置完后生成的 Cookie 就会在最后多了一个 ;HttpOnly

另外使用 Session 的话 jsessionid 这个 Cookie 可通过在 Context 中使用 useHttpOnly 配置来启用 HttpOnly,例如:

<Context path="" docBase="D:/WORKDIR/oschina/webapp" 
    reloadable="false" useHttpOnly="true"/>

也可以在 web.xml 配置如下:

<session-config>
 <cookie-config>
  <http-only>true</http-only>
 </cookie-config>
<session-config>
对于 .NET 2.0 应用可以在 web.config 的 system.web/httpCookies 元素使用如下配置来启用 HttpOnly
<httpCookies httpOnlyCookies="true" …> 

而程序的处理方式如下:

C#:

HttpCookie myCookie = new HttpCookie("myCookie");
myCookie.HttpOnly = true;
Response.AppendCookie(myCookie);

VB.NET:

Dim myCookie As HttpCookie = new HttpCookie("myCookie")
myCookie.HttpOnly = True
Response.AppendCookie(myCookie)

.NET 1.1 只能手工处理:

Response.Cookies[cookie].Path += ";HttpOnly";

PHP 从 5.2.0 版本开始就支持 HttpOnly

session.cookie_httponly = True
加载中
0
蟋蟀哥哥
蟋蟀哥哥
这是要做什么啊
蟋蟀哥哥
蟋蟀哥哥
回复 @litescript : 不是防止xss,是防止cookie被盗
litescript
litescript
防XSS
0
litescript
litescript
为什么 reloadable设置为false啊?
王振威
王振威
生产环境当然是false,开发环境一般书true
0
litescript
litescript

引用来自“litescript”的答案

为什么 reloadable设置为false啊?
Set to  true  if you want Catalina to monitor classes in  /WEB-INF/classes/  and  /WEB-INF/lib  for changes, and automatically reload the web application if a change is detected. This feature is very useful during application development, but it requires significant runtime overhead and is not recommended for use on deployed production applications. That's why the default setting for this attribute is  false . You can use the  Manager web application, however, to trigger reloads of deployed applications on demand.
0
叶伊鸣
叶伊鸣

不怎么明白!

0
FutureTime
FutureTime

http://blog.csdn.net/liu251/article/details/7791164

这有对httponly作用的介绍

0
LinkerLin
LinkerLin

这个还是蛮有用的。

 

0
蟋蟀哥哥
蟋蟀哥哥
osc已经设置上了  这么快。。
0
j
jollyking

引用来自“蟋蟀哥哥”的答案

osc已经设置上了  这么快。。

红薯大哥还是很迅速的哈。

另外,简单看了下,osc也能防止CSRF,赞一个

蟋蟀哥哥
蟋蟀哥哥
晚了一个小时。。就已经设置上了的。。。害我现在改cookie变麻烦了。。需要中间通过一层代码来改cookie。。以前浏览器就可以直接改的
0
puras
puras
@红薯   Servlet2.4和Servlet2.5如何设置?
刘逸飞
刘逸飞
回复 @puras : 要怎么搞?
puras
puras
回复 @红薯 : O了,Thank you!
红薯
红薯
自己写 response header
0
nop4ss
nop4ss

resin也能设置cookie-only 

<cookie-http-only/>

不知道apache能否设置?????  @红薯   


红薯
红薯
apache 不清楚
返回顶部
顶部