今天老大让我研究一下注册页面的验证码,因为许多同事认为我们公司注册页面的验证码做的太简单了,偶之前也没做过这个,不过要做这个之前得要先研究一下其原理啊什么的,从公司之前做的一个版本的源码中发现了这么一个bug,而且这个bug可就很容易让一些图谋不轨者进行恶意注册哦,他完全可以绕过你在注册页面中显示的图片验证码.
从源码中发现,其实验证码是记录在Session中的一个随机产生的值,当注册失败时这个值会重新产生,但是注册成功以后居然没有把这个值改掉.这样的话就有可能会发生这种情况,我请求了N个注册页面,然后记录最后一个注册页面的验证码,然后在所有注册页面的验证码处填写这个值,我只要保证每次提交的内容能够注册成功就可以了,这样岂不是一下子就能注册N个账户,这样的话你的验证码的防恶意注册功能又在何处体现出来呢?
我想这可能并不是我们一家网站存在的问题,于是上网随便找了个注册网站http://register.ourgame.com/regist/index.html,首先用浏览器拉两个注册页面过来,记下后面拉过来那个注册页面上的验证码,然后将信息填写好,注意在验证码那里我都填了后面那个页面的,点击注册,ok第一个用户注册成功,在将第二个注册信息提交,ok也注册成功.好了,例子不多举了.
最后,建议各网站的管理员,看看你们的验证码发挥了作用没??如果没有的话,请在注册成功后将Session中的验证码信息改掉或清空掉.
写以上心得不是让大家去写段程序去恶意注册这些存在漏洞的网站,而是让这些网站的管理员能及时发现其实你们的网站已经有漏洞的,请及时修补哦!!
Good Luck !!!!