• 技术文章 >后端开发 >php教程

    比较全面的php session验证码与防分辨

    2016-06-13 13:04:47原创316
    比较全面的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中文网,转载请注明出处,感谢您的尊重!如有疑问,请联系admin@php.cn处理
    上一篇: php object或者array怎么转换成string 下一篇: 正则除去一些DIV内的内容
    大前端线上培训班

    相关文章推荐

    • 怎样去搞定PHP类的继承?(总结分享)• 带你分清类中的构造函数与析构函数• 你知道这个PHP命令行选项解析库(pflag)吗?• PHP中如何才能将时间日期格式化?怎么计算时间差?• 一定搞得懂PHP中如何添加图片水印

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网