Cookie的secure和httpOnly属性的含义 以及 Cookie设置HttpOnly,Secure,Expire属性
Cookie的secure和httpOnly属性的含义
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/wang252949/article/details/79557963
Cookie访问控制
cookie如此重要,在浏览器端,如果一个网站可以访问其他网站的cookie,肯定不行的,所以浏览器是不允许跨域访问cookie的,提高了Cookie的安全性。
在前面的文章 session和cookie介绍 中,已经介绍了cookie的作用域,主要是说一级域名相同情况下如何共享使用cookie。
如果想实现跨域访问,可以通过JSONP、CORS的方法实现。
另外,HTTP设置cookie时,提供了2个属性,可以增强cookie的安全性,分别是secure属性和httpOnly属性。
secure属性可防止信息在传递的过程中被监听捕获后导致信息泄露,如果设置为true,可以限制只有通过https访问时,才会将浏览器保存的cookie传递到服务端,如果通过http访问,不会传递cookie。
httpOnly属性可以防止程序获取cookie,如果设置为true,通过js等将无法读取到cookie,能有效的防止XSS攻击。
Appscan漏洞 之 加密会话(SSL)Cookie 中缺少 Secure 属性
近期 Appscan扫描出漏洞 加密会话(SSL)Cookie 中缺少 Secure 属性,已做修复,现进行总结如下:
1.1、攻击原理
任何以明文形式发送到服务器的 cookie、会话令牌或用户凭证之类的信息都可能被窃取,并在稍后用于身份盗窃或用户伪装,此外,若干隐私法规指出,用户凭证之类的敏感信息要始终以加密的方式发送到 Web 站点。
1.2、修复建议
给cookie添加secure属性
1.3、修复代码示例
1)服务器配置为HTTPS SSL方式
2)Servlet 3.0 (Java EE 6)的web.xml 进行如下配置:
<session-config>
<cookie-config>
<secure>true</secure>
</cookie-config>
</session-config>
3)ASP.NET的Web.config中进行如下配置:
<httpCookies requireSSL="true" />
4)php.ini中进行如下配置
session.cookie_secure = True
或者
void session_set_cookie_params ( int $lifetime [, string $path [, string $domain
[, bool $secure= false [, bool $httponly= false ]]]] )
或者
bool setcookie ( string $name [, string $value [, int $expire= 0 [, string $path
[, string $domain [, bool $secure= false [, bool $httponly= false ]]]]]] )
5)weblogic中进行如下配置:
<wls:session-descriptor>
<wls:cookie-secure>true</wls:cookie-secure>
<wls:cookie-http-only>true</wls:cookie-http-only>
</wls:session-descriptor>
1.4、其它资料
https://www.owasp.org/index.php/SecureFlag
1.5、实际修复方案
方案一:项目使用的是WebShpere服务器,这个可以在服务器中进行设置:
其实这种修复方式和5.2修复建议2)给web.xml加配置的方式是一样的。这两种修复方式都是一定可以通过Appscan扫描的,只不过19环境需要支持https和http两种协议,以上两种方案的话,会导致http协议下的Cookie不能传输,从而导致http协议下的部分功能不能使用。现在暂时是以牺牲http协议下的功能不使用为代价以这种方案通过扫描的。
方案二:
如果给Cookie配置了secure属性,那么这个Cookie能在https协议中传输,但是不能在http协议中传输。而实际系统应用中要支持两种协议,这里可以通过request.getScheme()获取是哪种协议(这种方式https协议获取的也是http,奇怪,可以通过下面的方式判断是否是https协议)
String url = req.getHeader("Referer");
if(url.startsWith("https")){}
然后进行判断是否加这个属性:cookie.setSecure(true)。
而这种方案的话,只能对后期自己代码响应的Cookie做设置,而不能对容器自动响应的Cookie做设置。因此这里没有使用。
会话cookie中缺少secure属性
2014年12月09日 14:34:35 茄子爱烤火 阅读数 15978
What is it and why do I care ?
Session cookies (或者包含JSSESSIONID的cookie)是指用来管理web应用的session会话的cookies.这些cookie中保存特定使用者的session ID标识,而且相同的session ID以及session生命周期内相关的数据也在服务器端保存。在web应用中最常用的session管理方式是通过每次请求的时候将cookies传送到服务器端来进行session识别。
你可以设置附加的secure标识来提示浏览器只能通过Https(加密方式)方式来传输cookie,Http(未加密方式)方式则不可以。这种方式来保证你的session cookie对于攻击者是不可见的,避免中间人攻击(Man-in-the-Middle Attack,简称“MITM攻击”)。这并不是一个完美的session安全管理方案,却是一个重要的步骤。
what should I do about it ?
应对方法很简单。你必须在session cookie添加secure标识(如果有可能的话最好保证请求中的所有cookies都是通过Https方式传输)
如下是示例:未添加secure标识的session cookie-可能会被泄露
Cookie: jsessionid=AS348AF929FK219CKA9FK3B79870H;
添加secure标识:
Cookie: jsessionid=AS348AF929FK219CKA9FK3B79870H; secure;
方式很简洁。你可以甚至可以手工设置这个标识,如果你在Servlet3或者更新的环境中开发,只需要在web.xml简单的配置来实现。你只要在web.xml中添加如下片段:
<session-config>
<cookie-config>
<secure>true</secure>
</cookie-config>
</session-config>
Cookie设置HttpOnly,Secure,Expire属性
2018年07月20日 17:03:04 绝不打铁 阅读数 1587
原文地址: https://blog.csdn.net/a19881029/article/details/27536917
Tomcat版本为6.0.39,JDK版本为1.6update45
在Web工程上增加一个Filter对Cookie进行处理
public class CookieFilter implements Filter {
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest) request;
HttpServletResponse resp = (HttpServletResponse) response;
Cookie[] cookies = req.getCookies();
if (cookies != null) {
Cookie cookie = cookies[0];
if (cookie != null) {
/*cookie.setMaxAge(3600);
cookie.setSecure(true);
resp.addCookie(cookie);*/
//Servlet 2.5不支持在Cookie上直接设置HttpOnly属性
String value = cookie.getValue();
StringBuilder builder = new StringBuilder();
builder.append("JSESSIONID=" + value + "; ");
builder.append("Secure; ");
builder.append("HttpOnly; ");
Calendar cal = Calendar.getInstance();
cal.add(Calendar.HOUR, 1);
Date date = cal.getTime();
Locale locale = Locale.CHINA;
SimpleDateFormat sdf =
new SimpleDateFormat("dd-MM-yyyy HH:mm:ss",locale);
builder.append("Expires=" + sdf.format(date));
resp.setHeader("Set-Cookie", builder.toString());
}
}
chain.doFilter(req, resp);
}
public void destroy() {
}
public void init(FilterConfig arg0) throws ServletException {
}
}
web.xml:
<filter>
<filter-name>cookieFilter</filter-name>
<filter-class>com.sean.CookieFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>cookieFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
FireFox:
Chrome:
IE:
Cookie的secure和httpOnly属性的含义 以及 Cookie设置HttpOnly,Secure,Expire属性相关推荐
- cookie设置httponly属性防护XSS***
***者利用XSS漏洞获取cookie或者session劫持,如果这里面包含了大量敏感信息(身份信息,管理员信息)等,***这里用获取的COOKIE登陆账号,并进行非法操作. COOKIE设置http ...
- cookie 设置 httpOnly属性
cookie 设置 httpOnly属性防止js读取cookie. 建立filter拦截器类 CookieHttpOnlyFilter import java.io.IOException; impo ...
- Cookie设置HttpOnly属性
在Servlet 3.0中增加对Cookie(请注意,这里所说的Cookie,仅指和Session互动的Cookie,即人们常说的会话Cookie)较为全面的操作API.最为突出特性:支持直接修改Se ...
- Tomcat为Cookie设置HttpOnly属性
A:Tomcat 中维持Java webapp的Http会话是以Cookie形式实现的存储在服务端用户状态信息的: B:服务端可以自定义建立Cookie对象及属性传递到客户端: 服务端建立的Cooki ...
- java设置httponly_Tomcat为Cookie设置HttpOnly属性
B:服务端可以自定义建立Cookie对象及属性传递到客户端: 服务端建立的Cookie如果没有设置HttpOnly属性,则在客户端可以用js读取Cookie中的内容(客户端脚本可以读取Session ...
- 用ISAPI Filter设置HttpOnly属性
作者:Tony Qu 说到ISAPI很多人会觉得很陌生,因为如果你是做ASP.NET开发的话,ISAPI的方式已经过时,取而代之的是HttpHandler和HttpModule,说到这两个东西很多人估 ...
- java httponly设置_cookie 设置 httpOnly属性
cookie 设置 httpOnly属性防止js读取cookie. 建立filter拦截器类 CookieHttpOnlyFilterimport java.io.IOException; impor ...
- Java 设置 httponly cookie
Httponly cookie 是一种 cookie 安全解决方案. 在支持httponly cookie的浏览器(IE6+.FF3.0+)中,如果cookie中设置了"httponly&q ...
- web.config forms节点中的属性的含义和用途
authentication mode="Forms"/> 这样之后,ASP.NET运行时就知道我们启用了Forms验证,在生命周期的验证阶段就激活FormsAuthenti ...
最新文章
- Spring Cloud 中国社区一周年技术沙龙-北京站
- 【数字信号处理】周期序列 ( 周期序列定义 | 周期序列示例 )
- linux eth0 device not found,nVidia集成驱动已经安装了,但是Device not found,我的网卡怎么用呢?...
- 机器学习笔试精选题精选(四)
- JZOJ 3870. 【NOIP2014八校联考第4场第1试10.19】单词检索(search)
- WEB前端 前端开发者 如何突破技术瓶颈
- python 简单trace 过滤处理
- SQLite学习笔记(十二)虚拟机指令
- 北京电子科技学院(BESTI)实验报告5
- 本以为用的MyBatis框架就万无一失了,没想到还是被黑客注入了,我真的无语了!...
- BUG Error:Execution failed for task ':app:dexDebug'.
- 浅谈《原神》中的图形渲染技术
- 使用HBuilderX将H5网页打包成APP
- 电子电路设计小目录------面包板制作130例
- 基于J2EE的线上打印平台
- pygame之display模块
- 当路町-网络下载应用系列之三-认识磁力链接Magnet URL
- 大学操作系统期末考试复习经典计算题快速回顾
- LT3759 宽输入电压范围升压 / 负输出 / SEPIC 控制器 可在输入电压低至 1.6V 的情况下工作...
- 平凡之路 | 科班小硕的2020年面试小结