最近在解决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属性的问题的更多相关文章

  1. Cookie工具类 - CookieUtil.java

    Cookie工具类,提供Cookie的创建.获取.删除方法. 源码如下:(点击下载 -CookieUtil.java ) import javax.servlet.http.Cookie; impor ...

  2. java cookie 工具类

    package com.xxx.xxx.xxx.xxx; import java.net.URLDecoder; import java.net.URLEncoder; import javax.se ...

  3. Cookie工具类

    import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletRequest; import javax.servlet ...

  4. Java Cookie工具类

    1.Cookie跨域 Cookie不能跨顶级域名访问,但是二级域名可以共享Cookie,所以要实现跨域,有一定的局限性. 2.代码 package com.DingYu.Cookie; import ...

  5. 180425、cookie工具类

    package com.thinkgem.jeesite.common.utils; import java.io.UnsupportedEncodingException; import java. ...

  6. Java Cookie工具类,Java CookieUtils 工具类,Java如何增加Cookie

    Java Cookie工具类,Java CookieUtils 工具类,Java如何增加Cookie >>>>>>>>>>>>& ...

  7. Cookie 工具类

    一.导入 jar 包 <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet ...

  8. Cookie工具类(获取cookie,设置cookie)

    import java.io.UnsupportedEncodingException; import java.net.URLDecoder;import java.net.URLEncoder; ...

  9. js cookie 工具类

    /*cookie start*/ var Cookie=new function(){ //添加cookie this.add=function(name,value,hours){ var life ...

随机推荐

  1. maven 检查依赖冲突和版本冲突

    maven 检查依赖冲突和版本冲突   在项目发布的时候,一般都需要进行依赖冲突检查或者重复类的检查,这个时候我一般会使用下面的两个命令:   1 2 3 mvn -U clean package - ...

  2. 详解spring 每个jar的作用

    spring.jar 是包含有完整发布模块的单个jar 包.但是不包括mock.jar, aspects.jar, spring-portlet.jar, and spring-hibernate2. ...

  3. 【视频处理】YV12ToARGB

    前面提到了YV12转RGB的各种实现方法和优化方法,主要是CPU上的实现.本文主要介绍基于GPU的YV12转RGB的实现. 1. 基于OpenGL的实现 利用OpenGL shader实现将YV12转 ...

  4. 参数化命令相关知识点之==================防止SQl的注入

    一: 使用参数化命令查询DAL类: public DataTable StudentDAL(string name,string gender) { string str="连接字符串&qu ...

  5. linux下使用taskset设置进程cpu绑定不起作用

    自从大规模使用了虚拟化之后,大流量时soft interrupt在某个cpu很高就是个严重的问题,最近一有时间就研究这个问题,如果网卡本身不支持多队列的话,有没有办法缓解这个问题. 一开始使用rps, ...

  6. Tsql查询执行顺序(二)

    来源:http://www.cnblogs.com/gaiyang/archive/2011/04/13/2014356.html T-SQL查询处理这种逻辑处理顺序,是理论上的处理过程,实际情况还会 ...

  7. Bootstrap源码分析之dropdown

    源码分析: Dropdowns.scss:下拉框模块 Javascripts/bootstrap/dropdown.js:实现下拉框响应 实现功能及原理: 下拉选项卡,默认不能实现显示选中项的功能 原 ...

  8. Refusing to install webpack as a dependency of itself

    用npm安装webpack的时候报了这个错: Refusing to install webpack as a dependency of itself 翻译过来大概是:'拒绝安装webpack其本身 ...

  9. SAP 录屏BDC使用—实例

    1)  输入TCode:SHDB进入BDC录制初始界面,该界面可以实现已创建BDC Session信息的查看.删除及锁定等操作 2)  单击工具栏 Newrecording 按钮创建一个新的BDC,系 ...

  10. 百度地图SDK 遇到的问题及解决方案

    目前项目工作中用到了百度地图sdk,遇到了不少问题,在此记录一下,顺便吐槽下希望百度能把这地图sdk做的更好用一点. 1,开发环境, Xcode6.0 (6A313) + 百度地图 iOS SDK v ...