HttpOnly Cookies是一个cookie安全行的解决方案。

在支持HttpOnly cookies的浏览器中(IE6+,FF3.0+),如果在Cookie中设置了"HttpOnly"属性,那么通过JavaScript脚本将无法读取到Cookie信息,这样能有效的防止XSS攻击,让网站应用更加安全。

但是J2EE4,J2EE5 的Cookie并没有提供设置 HttpOnly 属性的方法,所以如果需要设置HttpOnly属性需要自己来处理。

import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletResponse; /**
* Cookie工具类
*/
public class CookieUtil { /**
* 设置HttpOnly Cookie
* @param response HTTP响应
* @param cookie Cookie对象
* @param isHTTPOnly 是否为HttpOnly
*/
public static void addCookie(HttpServletResponse response, Cookie cookie, boolean isHttpOnly) {
String name = cookie.getName();//Cookie名称
String value = cookie.getValue();//Cookie值
int maxAge = cookie.getMaxAge();//最大生存时间(毫秒,0代表删除,-1代表与浏览器会话一致)
String path = cookie.getPath();//路径
String domain = cookie.getDomain();//域
boolean isSecure = cookie.getSecure();//是否为安全协议信息 StringBuilder buffer = new StringBuilder(); buffer.append(name).append("=").append(value).append(";"); if (maxAge == 0) {
buffer.append("Expires=Thu Jan 01 08:00:00 CST 1970;");
} else if (maxAge > 0) {
buffer.append("Max-Age=").append(maxAge).append(";");
} if (domain != null) {
buffer.append("domain=").append(domain).append(";");
} if (path != null) {
buffer.append("path=").append(path).append(";");
} if (isSecure) {
buffer.append("secure;");
} if (isHttpOnly) {
buffer.append("HTTPOnly;");
} response.addHeader("Set-Cookie", buffer.toString());
} }

值得一提的是,Java EE 6.0 中 Cookie已经可以设置HttpOnly了,所以如果是兼容 Java EE 6.0 的容器(例如如 Tomcat 7),可以直接使用Cookie.setHttpOnly 的方法来设置HttpOnly:

cookie.setHttpOnly(true);

最新文章

  1. Redis 学习笔记
  2. ligerui做分页显示数据
  3. mysql概要(十)触发器
  4. 修改msconfig->引导->高级选项-》最大内存为512M
  5. 【转】Android API 中文(14) —— ViewStub
  6. iOS视图控制器之间delegate传值教程
  7. Delphi 中 FindWindow 和 FindWindowEx 找到外部进程,然后发送消息(比如最大化)
  8. java实现代理domino web邮件下载
  9. java_linux_shell_定时kill 启动java程序
  10. 汇总博客常见的api接口地址(windows live write)
  11. 工厂方法模式(Method Factory),理解多态应用的好例子.
  12. 04-PHP-redis
  13. CS224d 单隐层全连接网络处理英文命名实体识别tensorflow
  14. 阿里云Centos7 yum安装MySQL5.6
  15. MINA线程模型
  16. Nginx的rewrite(地址重定向)剖析
  17. JavaScript eval_r() 函数
  18. 操作系统(Operating System,OS)
  19. Linux及安全实践二——模块
  20. enumerate遍历列表

热门文章

  1. less、sass、stylus
  2. EPF与Myeclipse 增强代码自动智能提示
  3. MyEclipse 2014配置Maven
  4. java 二维码编码解码
  5. (转)IntelliJ Idea 常用快捷键列表 for win
  6. .net framework中重新注册IIS
  7. android不同机型上界面适配问题
  8. Solidworks如何隐藏零件细节,如何让零件变成一个输入
  9. 利用U盘启动,全新安装Mac操作系统.
  10. django2自动发现项目中的url