赞
踩
最近公司的项目有要求将sessionid做成httponly和secure可配置的设定。
首先什么是httponly和secure呢?是cookie中的两个属性
当设置了httponly为true时,通过js脚本是无法获取到cookie的信息的。防止XSS攻击。
secure为true时,服务只能通过https来进行cookie的传递,使用http服务无法提供服务。
设置sessionid, 在浏览器可以通过F12查看当前服务页面cookie信息,可以看到jsessionid:
由图可以看到最后的几个指标中有HTTP,代表了httponly属性,当设置了httponly时,就会有对勾出现。还有Secure的值,显示当前是否配置了Secure的属性要求。
配置jsessionid的httponly,secure
这个可以直接配置项目中的web.xml进行配置,配置如下,添加session-config标签
- <session-config>
- <session-timeout>120</session-timeout>
- <cookie-config>
- <http-only>false</http-only>
- <secure>false</secure>
- </cookie-config>
- </session-config>
jsessionid的配置主要跟tomcat有关,tomcat6httponly默认是关闭的,tomcat7默认是启用的,需要配置content.xml来解决了;
当然其他放进cookie中的信息也可以配置这两个属性值
项目一:cookie是使用了spring框架的cookie组件org.springframework.web.util.CookieGenerator,集成了CookieGenerator类。由于是老项目,通过xml方式可以注入参数信息到bean中。
CookieGenerator提供了isCookieHttpOnly方法和isCookieSecure方法,做是否要设置这两个值得判断方法,当然默认值都是false,需要注入才可以,通过xml引用properties中得配置信息,即可实现在properties中控制这两个值的使用。
项目二:cookie直接用的javax.servlet.http.Cookie。这个可以取properties中的设置的两个属性的开关,判断是否需要设置,直接set这两个属性就ok了。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。