cookie工具类,解决servlet3.0以前不能添加httpOnly属性的问题
最近在解决XSS注入的问题,由于使用的servlet版本是2.5,不支持httpOnly的属性,故做了个工具类来实现cookie的httpOnly的功能。全类如下:
/**
* cookie工具类,解决servlet3.0以前不能添加httpOnly属性的问题 
  *
 
  * @author zhang-long
 
  * @createTime 2013-6-20
 
  */
 
 public class CookieUtil {
 
 
 /**
 
 
 * 
 
 
 * @param response HttpServletResponse类型的响应
 
 
 * @param cookie 要设置httpOnly的cookie对象
 
 
 */
 
     public static void addHttpOnlyCookie(HttpServletResponse response, Cookie cookie){
 
    
 // 判断对象是否存在null的情况
 
    
 if(checkObjIsNull(response) || checkObjIsNull(cookie)){
 
    
 return;
 
    
 }
//依次取得cookie中的名称、值、最大生存时间、路径、域和是否为安全协议信息
 
    
 String cookieName = cookie.getName();
 
    
 String cookieValue = cookie.getValue();
 
    
 int maxAge = cookie.getMaxAge();
 
    
 String path = cookie.getPath();
 
    
 String domain = cookie.getDomain();
 
    
 boolean isSecure = cookie.getSecure();
StringBuffer strBufferCookie = new StringBuffer();
 
         strBufferCookie.append(cookieName + "=" + cookieValue +  ";");
 
         
 
         if(maxAge >= 0){
 
             strBufferCookie.append("Max-Age=" + cookie.getMaxAge() + ";");
 
         }
 
         
 
         if(!checkObjIsNull(domain)){
 
        
 strBufferCookie.append("domain=" + domain + ";");
 
         }
 
         
 
         if(!checkObjIsNull(path)){
 
        
 strBufferCookie.append("path=" + path + ";");
 
         }
 
         
 
         if(isSecure){
 
        
 strBufferCookie.append("secure;HTTPOnly;");
 
         }else{
 
        
 strBufferCookie.append("HTTPOnly;");
 
         }
 
         
 
         response.addHeader("Set-Cookie",strBufferCookie.toString());
 
     }
 
     
 
     
 
     private static boolean checkObjIsNull(Object obj){
 
    
 if(obj == null){
 
    
 return true;
 
    
 }
return false;
 
     }
}
使用举例:
Cookie cookie1=new Cookie("n","cookieValue1"); 
 cookie1.setMaxAge(500);
 Cookie cookie2=new Cookie("cookieName2","cookieValue2"); 
 Cookie cookie3=new Cookie("cookieName3","cookieValue3"); 
 cookie3.setSecure(true);
 Cookie cookie4=new Cookie("cookieName4","cookieValue4"); 
 cookie4.setSecure(true);
CookieUtil.addHttpOnlyCookie(response, cookie1);
 CookieUtil.addHttpOnlyCookie(response, cookie2);
 CookieUtil.addHttpOnlyCookie(response, cookie3);
 CookieUtil.addHttpOnlyCookie(response, cookie4);
例子中红色的部分只有在应用 使用了HTTPS协议的时候才能添加,否则这个cookie将再也无法读出!
添加成功后,查看cookie如下:
cookie工具类,解决servlet3.0以前不能添加httpOnly属性的问题的更多相关文章
- Cookie工具类 - CookieUtil.java
		Cookie工具类,提供Cookie的创建.获取.删除方法. 源码如下:(点击下载 -CookieUtil.java ) import javax.servlet.http.Cookie; impor ... 
- java cookie 工具类
		package com.xxx.xxx.xxx.xxx; import java.net.URLDecoder; import java.net.URLEncoder; import javax.se ... 
- Cookie工具类
		import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletRequest; import javax.servlet ... 
- Java Cookie工具类
		1.Cookie跨域 Cookie不能跨顶级域名访问,但是二级域名可以共享Cookie,所以要实现跨域,有一定的局限性. 2.代码 package com.DingYu.Cookie; import ... 
- 180425、cookie工具类
		package com.thinkgem.jeesite.common.utils; import java.io.UnsupportedEncodingException; import java. ... 
- Java Cookie工具类,Java CookieUtils 工具类,Java如何增加Cookie
		Java Cookie工具类,Java CookieUtils 工具类,Java如何增加Cookie >>>>>>>>>>>>& ... 
- Cookie 工具类
		一.导入 jar 包 <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet ... 
- Cookie工具类(获取cookie,设置cookie)
		import java.io.UnsupportedEncodingException; import java.net.URLDecoder;import java.net.URLEncoder; ... 
- js cookie 工具类
		/*cookie start*/ var Cookie=new function(){ //添加cookie this.add=function(name,value,hours){ var life ... 
随机推荐
- python CGI编程Apache配置
			1. 编辑http.conf,添加两行,路径可以自定义 <Directory "C:/AppServ/www/cgi-bin"> AllowOverride None ... 
- jQuery Transit 过渡效果
			jQuery Transit 使用 CSS3 的新特性来实现过渡效果,比默认的.animate方法要顺畅得多. 因为使用 CSS3 进行过渡效果,所以对不支持 CSS3 的浏览器效果有所下降. 语法和 ... 
- Ifvisible.js – 判断网页中的用户是闲置还是活动状态
			ifvisible.js 是一个跨浏览器.轻量级的方式,用户检查用户在浏览页面或正在与它进行交互.它可以处理活动状态,如在页面上空闲或活跃.您还可以使用 ifvisible.js 智能设置您的间隔,如 ... 
- javascript数据类型理解整理
			起因:关于数据类型这块,自己看了很多遍相关的资料,每次查看和实践都有一些体会和理解:但又感到没有理解透,总是差一点,最近又在看这块的内容,加上最近的积累,做个相关笔记 ECMAScript数据类型:1 ... 
- 使用three.js创建3D机房模型-分享一
			序:前段时间公司一次研讨会上,一市场部同事展现了同行业其他公司的3D机房,我司领导觉得这个可以研究研究,为了节约成本,我们在网上大量检索,最后找到一位前辈的博文[TWaver的技术博客],在那篇博文的 ... 
- JavaScript学习笔记-函数实例
			函数实例 var p = { a:15, b:'5', f1:function(){ var self = this; console.log(self.a+self.b); f2(); functi ... 
- cordova 添加闪屏效果
			为项目添加SplashScreen插件 在Cordova项目目录运行: cordova plugin add apache.cordova.splashscreen 这个命令从插件git库下载插件代码 ... 
- Autodesk 最新开发技术研讨会-北京-上海-武汉-成都-西安-PPT下载
			经过半月的奔波,转遍祖国大好河山.结论,还是喜欢成都,安逸~,好希望能在成都生活,竹林里品茶,不亦乐乎~ 如果你没能参加我们的研讨会,下面的PPT供参考: 面向世界.面向未来 – Autodesk 云 ... 
- 虚拟机克隆以后出现“需要整合虚拟机磁盘”的解决方法
			问题描述 在虚拟机克隆完毕以后,原始虚拟机提示"需要整合虚拟机磁盘" 在"任务与事件"栏中看到以下信息 解决方法 从上面可以看到是因为整合失败导致的,那么我们只 ... 
- Java8 Lambda表达式教程
			转自:http://blog.csdn.net/ioriogami/article/details/12782141 1. 什么是λ表达式 λ表达式本质上是一个匿名方法.让我们来看下面这个例子: pu ... 
