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