| 发表于:2007-05-27 23:05:099楼 得分:200 |
首先,你要知道验证码的原理. 为什么要有验证码,我不说了. 说说验证码页的大致流程. 验证码的产生.. 当一个用户去请求一个带有 <img src= "验证码图片srcurl "> 这样一个页面的时候. 其实,浏览器至少有两个http请求. 首先.. 肯定是html请求的这个页面. 然后,在浏览器解析这个页面时,知道了,哦.还要去请求 验证码图片. 所以,,浏览器会再开一个线程去请求验证码图片的http请求. 这个请求分两种情况. a 游览器已对该站有cookie(并且有sessionid的cookie) b 浏览器没有对该站的cookie 当a时,就是浏览器明确自己的身份.是sessionid的用户..这时,验证码图片生成程序 就会检查sessionid的有效性以及原保存session数据是否过期. 注意: session数据包含很多,其中,有一个,就是保存了验证码数据的session. 是不是因为有sessionid了,这个数据就不动它了呢? 不是...这个session在每次请求,都会生成一个随机数字..这样,即使你伪造了sessionid的cookie 这时候 session里的数据已经变掉了.也就是说,你用cookie伪造过去,你得到的验证码是已经变掉的. 当b时, 验证码图片生成程序在初始化session时,就会自动为客户端ie添加一个sessionid的cookie.这样,以后浏览器就会把生成的sessionid 的cookie带过来. 当然,你的担心 不是 全没有道理... session的安全是存在...只是不体现在验证码上... 因为每次验证码session都会变化... 呵呵.如果我伪造sessionid的cookie是不是能得到服务端的session数据呢? 答案, 是的,是可以的.... 曾经有一次... 在局网嗅探到一次http请求数据.. 里面有cookie 包含 了sessionid 然后有个网址. 然后 在自己浏览器端添加了该站的cookie, 测试了一下. 成功地得到了那个用户在那个站点的权限.... | | |
|