网页验证码的基本原理、常见漏洞及解决方法

    前些天查了一些验证码的资料,了解了一些信息,也发现了一些网站确实存在的漏洞。下文将分析验证码原理及存在的问题。首先声明:本文仅仅探讨技术,请各位读者不要利用这些信息进行非法行为,笔者不承担任何连带责任!当然,笔者能力有限,这里也提供不了什么实质性技术,只是将自己获取的一些信息与大家分享,呵呵。
    验证码的原理其实比较简单,一般都是链到一个动态页面,然后后台服务器生成一个随机数,利用这个随机数映射一张图片,最后将这张图片返回客户,同时将这个随机数保存起来,当用户提交验证码时检测填写的验证码是否和这个随机数相同。这里我想重点说三点,这三点处理不好都可能被破解者利用。一是随机数的生成,二是随机数和图片的映射,三是随机数如何保存。
    随机数的生成是第一个需要注意的问题。大部分网站采用的都是伪随机数生成算法,而目前的伪随机数生成算法种类不多,编写验证码代码的人如果算法功底不强(或者偷懒),往往都采用后台语言类库所提供的伪随机数生成算法,这样从算法的角度入手破解的可能性还是比较大的。但是由于破解者往往数学功底也一般所以被破解的可能性也有限,但是一旦被破解验证码也就形同虚设。笔者算法功底也一般,在此不做深入研究,建议采用优良的随机数生成算法。
    随机数和图片的映射问题,我所了解的有两种。一种是将所有验证码图像以二进制形式存储在数据库(或文件系统)中,实现时根据生成的随机数将对应的图片取出即可;第二种是根据随机数实时的生成一张图片,然后返回(当然,为了提高效率会加入服务器端缓存策略)。第一种方式比较健壮,因为可以在图片上加上很多噪音,第二种方式就比较危险,主要看你生成图片的算法如何了,如果不好的话很容易被破解。这里的典型破解方式是利用

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值