比较全面的php session验证码与防分辨
验证码开发过程中的 3 个误区:
1、? 背景干扰:干扰线、干扰点、干扰图,基本没有,程序很容易通过高亮度调节去除掉。
2、? 字符旋转:破解机器人通过数次学习、旋转之后,能够得到 90% 以上的正确识别率,采用常规字体,能够得到接近 100% 的识别。
3、? 随机间距:基本没用,采用提取高亮度之后,采用图片切割的方法,很容易就将随机间距消灭掉。
?
防止被破解:
1、? 背景干扰线尽量能够干扰到字符,采用和字符相同的颜色,能够破坏高亮度反差色提取法对字符的学习。 QQ 有采用。
2、? 矢量变形:想 Google 、 Ms 、 Yahoo 都采用了这种变态的方法,这种将字符进行扭曲变形,基本上机器识别率为零,因为没有相对应的固定形状。 损失是用户也不一定认得。需要验证码图片有一些大才行。
3、? 字符粘连,可以破坏掉字符切割法分割字符, Google 也有用到这个, QQ 也有采用。
4、? 中文验证码,中文验证码的识别难度比较大,但是现在逐渐的也慢慢被学习并且破解。(香港,*是用繁体)
5、? 字符旋转:需要和字符粘连在一起才能够起作用,他们一起,验证码几乎不具备机器破解可能性。 加随机背景图片、随机字体、稍微旋转字母或数字,位置不固定,稍微扭曲
?
注意:
字体.ttf的当$mode=7的该字体必须支持中文,否则出现乱码。
在服务端做验证时取session存储的验证字符与用户提交的字符进行比较,相同则通过验证。
中文占两个字符长度,需要控制验证码图片的长度,一个中文位置相当于2个非中文
为了避免机器人的破解,验证码的视觉效果越来越差,随之很多网站就加了“看不清?请刷新”之类的功能,当然也不是简简单单的页面刷新,是只刷新验证码部分,用户从而得到一个新的验证码。在网上看了些别人写的方法,下面总结两种。
第一种比较简单,运用一下onclick即可,直接点击验证码的图片就可以刷新,不过最好在验证码后面说明一下,提示有这个功能。
第二种则是用JavaScript的方法:
刷新?
?
?
相关文章
相关视频
上一篇: PHP中Session是什么意思?