会话劫持(Session hijacking),这是一种通过获取用户 Session ID 后,使用该 Session ID 登录目标账号的攻击方法,此时攻击者实际上是使用了目标会话固定漏洞基本防御方法 账户的有效 Session。
会话劫持的第一步是取得一个合法的会话标识来伪装成合法用户,因此需要保证会话标识不被泄漏。
受害者登录站点,服务器返回一个会话标识(Session ID)
黑客捕获这个Session ID( 网络嗅探,XSS ),使用这个Session ID访问站点获得受害者合法会话
防御方法 #
XSS漏洞引起的会话劫持:使用http-only
来防止JS获取cookie中的Session ID信息
网络嗅探引起的会话劫持:使用HTTPS+secure
来保证Session ID不被嗅探获取到
Session机制 #
Session机制是一种服务器端的机制,服务器使用一种类似于散列表的结构来保存信息用于保持状态。
保存这个Session ID最为方便的方式是采用Cookie。
Cookie的名字都是类似于SESSIONID;
weblogic对于web应用程序生成的cookie,JSESSIONID;
PHP中Session的默认名称是PHPSESSID。
Cookie属性 #
HttpOnly 设置方法
服务端发送cookie的时候,可以设置HTTP-Only
,禁止 JS 获取Cookie内容
Set-Cookie: SESSIONID=abc123; expires=Wednesday, 17-Nov-99 23:12:40 GMT; HttpOnly
Secure
设置cookie的某个值secure为True时, 此cookie只有在HTTPS协议中才会进行传输
HTTP协议传输时,是不传输此协议的。