作者buganini (霸格尼尼)
看板PHP
标题安全的SESSION
时间Tue Oct 30 23:31:23 2007
http://140.122.126.12/~buganini/dev/session.php
使用方法很简单
把session_start()换成include上面这个档案即可
FEATURE:
1. 每次连线同步更新token
提昇抵抗hijack的能力
相当於TCP每次seq number的更新
(one time password)
2. 比TCP更好的抵抗能力
TCP在被hijack之後 基本上只能hijack回去
否则就束手无策了
这个script在被hijack之後
hijacker更新了server端的token
victim如果再连线 因为持有旧的token
所以整个session会被毁掉
victim需要重新建立session
而这个hijack就失效了
其实TCP应该也可以关闭连线
可是因为TCP的fixed token(ip-port pair)
是有规则的 所以容易被DOS
NOTICE:
如果一页有多个frame里面连到的页面都有include
这个script的时候
或着快速refresh
或browser有开pipelining
会发生饼乾赛跑...
这些request会拿着同一个token去连线
但经过一个连线之後token就会换掉
然後session就炸了...
适度提高$tolerance可以减少这个问题
但设太高会失去抵抗hijack的能力
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 221.169.71.109
※ 编辑: buganini 来自: 221.169.71.109 (10/31 07:42)
1F:推 maxisam:GJ 11/22 20:48
2F:推 bobju :实用.怎没被'm'? 07/12 15:43
3F:→ bobju :喔?原来还有後续讨论.. 07/12 15:44