
默认的验证码只加了噪点,没有加干扰线,这在一定程序上降低了"验证码识别程序"[1]的算法复杂度,给恶意攻击者提供了便利。为了提高验证码的安全性,我对这部分做了修改,随机增加4条干扰线。
主要修改的程序(/include/lib/checkcode.php)如下:

将图中红色框框住的部分添加进程序中即可。
由于添加了干扰线,安全性还是高了不少,对比之前没加干扰线的登录页面:
可以看到:人眼都比较难分辨,就更别说机器了,当然并不是每一张图片都能有这么好的效果。本站中的验证码部分除了加干扰线之外还增加了点击验证码图片自动刷新的功能。具体作法也很简单,只要在验证码部分的img元素中添加点击事件(这个事件自动更新img的src属性值)即可。
over.
---------------------------------------------
注释:
[1]机器自动识别验证码的原理是怎样的: http://www.zhihu.com/question/22479139