session的基本原理及安全性
1.服务器每次登录请求都会创建一个session对象session=(key,value)
2.key主要存在客户端(浏览器)
3.value主要存在服务端
http每次发送请求的头部会将存储sessionid的cookie内容发送过去
服务端解析cookie,拿到key,再通过key查找对应的内容返回前端
图3.1 跨站请求流程
从图3.1可以看出,让整个流程无法进行下去的措施有两个,一个就是加强对提交信息和页面显示信息的过滤,让非法提交内容无处施展;第二个就是让存储在cookie中的sessionid不能被js读取到,这样即使第一步出现漏洞的情况下,依然不会被攻击者走完整个攻击流程。
在php中设置sessionid的httponly属性的方法有很多,具体可以参考 stackoverflow上的一个提问。jsp中也是有很多方法,可以参考开源中国红薯发表的一篇文章。这里仅仅贴出来php中一个解决方法,就是在session_start()之后重新设置一下cookie