Cookie设置HttpOnly,Secure,Expire属性

在eclipese中创建Web工程时,有个dynamic web module version选项,首先解释下这个选项的意思:

http://stackoverflow.com/questions/3985916/dynamic-web-module-option-in-eclipse

That version correlates with Servlet API version. Servlet 3.0 (released at december 2009 as part of Java EE 6) runs on Servlet 3.0 containers only (Tomcat 7, Glassfish 3, JBoss AS 6, etc). Servlet 2.5 (released at 11 may 2006 as part of Java EE 5) runs on Servlet 2.5 containers only or newer (Tomcat 6, Glassfish 2, JBoss AS 5, etc). Servlet 2.4 (released at november 2003 as part of J2EE 1.4) runs on Servlet 2.4 containers only or newer, etcetera.

You just need to pick the right API version whatever you want to implement your webapp in. Or if you don‘t have the freedom in picking the servlet container used, then pick the API which suits the servlet container version the best.

As to why the JDK defaults to one or other, it‘s just the minimum JDK requirement of the Servlet API version in question. Often, when you‘re picking an older Servlet API, in reality the JRE/JDK used is also that old.

Tomcat版本为6.0.39,JDK版本为1.6update45

在Web工程上增加一个Filter对Cookie进行处理

[java] view plaincopy

  1. public class CookieFilter implements Filter {
  2. public void doFilter(ServletRequest request, ServletResponse response,
  3. FilterChain chain) throws IOException, ServletException {
  4. HttpServletRequest req = (HttpServletRequest) request;
  5. HttpServletResponse resp = (HttpServletResponse) response;
  6. Cookie[] cookies = req.getCookies();
  7. if (cookies != null) {
  8. Cookie cookie = cookies[0];
  9. if (cookie != null) {
  10. /*cookie.setMaxAge(3600);
  11. cookie.setSecure(true);
  12. resp.addCookie(cookie);*/
  13. //Servlet 2.5不支持在Cookie上直接设置HttpOnly属性
  14. String value = cookie.getValue();
  15. StringBuilder builder = new StringBuilder();
  16. builder.append("JSESSIONID=" + value + "; ");
  17. builder.append("Secure; ");
  18. builder.append("HttpOnly; ");
  19. Calendar cal = Calendar.getInstance();
  20. cal.add(Calendar.HOUR, 1);
  21. Date date = cal.getTime();
  22. Locale locale = Locale.CHINA;
  23. SimpleDateFormat sdf =
  24. new SimpleDateFormat("dd-MM-yyyy HH:mm:ss",locale);
  25. builder.append("Expires=" + sdf.format(date));
  26. resp.setHeader("Set-Cookie", builder.toString());
  27. }
  28. }
  29. chain.doFilter(req, resp);
  30. }
  31. public void destroy() {
  32. }
  33. public void init(FilterConfig arg0) throws ServletException {
  34. }
  35. }

web.xml:

[html] view plaincopy

  1. <filter>
  2. <filter-name>cookieFilter</filter-name>
  3. <filter-class>com.sean.CookieFilter</filter-class>
  4. </filter>
  5. <filter-mapping>
  6. <filter-name>cookieFilter</filter-name>
  7. <url-pattern>/*</url-pattern>
  8. </filter-mapping>

FireFox:

Chrome:

IE:

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-28 00:45:32

Cookie设置HttpOnly,Secure,Expire属性的相关文章

cookie 设置 httpOnly属性

cookie 设置 httpOnly属性防止js读取cookie. 建立filter拦截器类 CookieHttpOnlyFilter import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.serv

cookie设置httponly属性防护XSS攻击

攻击者利用XSS漏洞获取cookie或者session劫持,如果这里面包含了大量敏感信息(身份信息,管理员信息)等,攻击这里用获取的COOKIE登陆账号,并进行非法操作. COOKIE设置httponly属性可以化解XSS漏洞攻击带来的窃取cookie的危害. PHP中COOKIE设置方法: <?php setcookie("xsstest", "xsstest", time()+3600, "/", "", false

浏览器因cookie设置HttpOnly标志引起的安全问题

1.简介 如果cookie设置了HttpOnly标志,可以在发生XSS时避免JavaScript读取cookie,这也是HttpOnly被引入的 原因.但这种方式能防住攻击者吗?HttpOnly标志可以防止cookie被"读取",那么能不能防止被"写"呢?答案是否定的,那么这里面就有文章可 做了,因为已证明有些浏览器的HttpOnly标记可以被JavaScript写入覆盖,而这种覆盖可能被攻击者利用发动session fixation攻击.本文主题就是讨论这种技术.

Servlet 2.5为cookie配置HTTPOnly属性

cookie的HTTPOnly属性,主要是用来防止JavaScript来读取cookie,默认情况下,JavaScript可以通过document.cookie来读取cookie,这样是很不安全的.通过配合XSS攻击,就可以达到盗取用户cookie的目的.这样的话,就可以在不知道用户密码的情况下,直接登陆用户的账号,现在很多网站都是使用coookie来保存用户名和密码信息的,非常不安全. 所以,出于安全考虑,我们最好是为cookie设置一下属性,让JS读取不到cookie,这样就会安全一些.Se

Session Cookie的HttpOnly和secure属性

Session Cookie的HttpOnly和secure属性 一.属性说明: 1 secure属性 当设置为true时,表示创建的 Cookie 会被以安全的形式向服务器传输,也就是只能在 HTTPS 连接中被浏览器传递到服务器端进行会话验证,如果是 HTTP 连接则不会传递该信息,所以不会被窃取到Cookie 的具体内容. 2 HttpOnly属性 如果在Cookie中设置了"HttpOnly"属性,那么通过程序(JS脚本.Applet等)将无法读取到Cookie信息,这样能有效

PHP设置COOKIE的HttpOnly属性

httponly是微软对cookie做的扩展.这个主要是解决用户的cookie可能被盗用的问题.    大家都知道,当我们去邮箱或者论坛登陆后,服务器会写一些cookie到我们的浏览器,当下次再访问其他页面时,由于浏览器回自动传递cookie,这样 就实现了一次登陆就可以看到所有需要登陆后才能看到的内容.也就是说,实质上,所有的登陆状态这些都是建立在cookie上的!假设我们登陆后的 cookie被人获得,那就会有暴露个人信息的危险!当然,想想,其他人怎么可以获得客户的cookie?那必然是有不

HostOnly Cookie和HttpOnly Cookie

怎么使用Cookie? 通常我们有两种方式给浏览器设置或获取Cookie,分别是HTTP Response Headers中的Set-Cookie Header和HTTP Request Headers中的Cookie Header,以及通过JavaScript对document.cookie进行赋值或取值. rfc6265第5.2节定义的Set-Cookie Header,除了必须包含Cookie正文,还可以选择性包含6个属性path.domain.max-age.expires.secure

JAVA设置HttpOnly Cookies

HttpOnly Cookies是一个cookie安全行的解决方案. 在支持HttpOnly cookies的浏览器中(IE6+,FF3.0+),如果在Cookie中设置了"HttpOnly"属性,那么通过JavaScript脚本将无法读取到Cookie信息,这样能有效的防止XSS攻击,让网站应用更加安全. 但是J2EE4,J2EE5 的Cookie并没有提供设置 HttpOnly 属性的方法,所以如果需要设置HttpOnly属性需要自己来处理. import javax.servle

tomcat设置httpOnly

经常看到一些人说tomcat6不支持httponly,查阅官方帮助文档后发现是可以支持的,tomcat6的context.xml配置说明 为什么需要httponly sessionid一般是以cookie的形式储存和传送的,除非禁用cookie: cookie是可以通过javascript进行读取,所以需禁用sessioid通过javascript进行读取,这时候就可以通过设置Cookie的http-only属性,禁止客户端脚本读取. tomcat设置 在conf/context.xml配置文件