最近公司的项目有要求将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了。
————————————————
版权声明:本文为CSDN博主「qq_28600087」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_28600087/article/details/87995925