一会话固定
攻击者访问你的站点并取得你分配给他的sessionID。比如你给的ID是.如果他使用某种手段欺骗其他用户使用同一ID,他就完全接管了用户的账户。
Java项目通常通过URL传递sessionID.你可能也看到过某些网站的URL中有JSESSIONID这个参数。URL传递sessionID是实现会话固定最简单的方式。攻击者要做的仅仅是让用户点击一下有?JSESSIONID=这个参数的链接。从PHP4.3开始,PHP也通过URL来传递sessionID。幸运的是PHP5.3就默认禁止了这一配置。除非你使用的框架或者PHP版本非常低,否则根本就不要担心会话固定攻击。只要确定php.ini的开启了session.use_only_cookies并禁止了session.use_trans_sid就不会有什么问题。
目前的PHP项目还有其他的攻击行为存在。防止sidejacking和跨站脚本(下面会讲)也能有效防止会话固定攻击。
二Sidejacking
跟中间人攻击类似,攻击者截取用户与服务器(通常通过公共Wi-Fi接入)之间的通信数据。跟主动修改请求数据不同,sidejacking攻击是被动监听并记录数据。Cookie在HTTP头部以明文传输,因此攻击者窃取sessionID很容易。
但是如果请求使用的是HTTPS协议呢?加密之后的数据可以避免sidejacking攻击吗?能否?通过适当的HTTPS设置,你和用户之间的数据都会被加密。看上去很安全,但是你不能控制用户在地址栏的输入行为。
假如用户已经访问过你的网站(