什么是Session?
- Session在网络应用中被称为“会话控制”。
- Session存储在服务器端。
- 用户A访问网站B,A登陆网站后,服务器会建立一个Session来保存用户状态和相关信息。每一个Session对应一个标识符SessionID来标识用户身份。SessionID通常是由服务器以加密的方式写到cookie中的,这样用户A登陆后,访问网站B中不一样的网页时请求中会带上SessionID来标识他的身份,以此实现一次登陆,访问全网站。(如今大多数站点采用基于cookie的session管理方式:用户登录成功后,设置一个惟一的cookie标识本次会话,基于这个标识进行用户受权。只要请求中带有这个标识,都认为是登陆态。)
Session劫持
只要请求中带有这个标识,都认为是登陆态
这就危险了,一旦你的标识被别人获取,你的Session就被别人劫持了,他就能够用你的身份随心所欲。服务器
最基本的cookie窃取方式:xss漏洞
攻击者最简单获取他人cookie信息的方法是XSS攻击,想办法注入js脚本到被攻击者客户端并执行,经过执行这个js脚本,攻击者在被攻击者登陆后得到了他的SessionID,经过在本身客户端修改sessionId得到了被攻击者的身份,后果不堪设想。。。cookie
防护方法 网络
- cookie设置为HttpOnly,js脚本就没法再获取cookie,也就没法获得你的会话标识。
- 防止xss注入:过滤用户输入
- 每次请求作其余验证:cookie中取加密后的用户id,session中取用户id并加密,比较两者,不一样时拦截住。(我的理解)