paip.提升安全性-------生成一个安全的验证码

paip.提升安全性-------生成一个安全的验证码

目前,许多网站已经有了验证码,但是许多验证码仅仅是简单的生成,一些简单的干扰点,或者一些简单的背景。。。这些验证码可以说对于注册机来说无任何意义,可以程序很容易识别

你需要对照以下标准检查你的验证码强度:

1.仅仅是一张简单的图片,PASS。
2.加了一些一些简单的干扰点,基本无用
3.一些简单的背景,也是基本无用
4.一些简单的线条,基本无用
5.文字没有变形扭曲
6.文字没有旋转方向
7.只有4个字母
8.只有一行..
9.验证码图片不是实时生成的,而是用有限的图片,很容易被人把库拉下来。。
10.图片文字与文字是分离的,没有粘连在一起..
11.从来没用验证码识别程序验证过强度
 

以上10个都是低强度验证码的特点,网站上用了这样的验证码,可以说相当于没用..就算是GOOGLE等比较难识别的验证码,也会被deathbycaptcha等人工打码的项目轻易识别...

还有一些验证码是比如3*8=? 这一类型的,这一类的如果答案在三个数及以下,可以说也是基本无太大用
还有一些是用汉字验证码,如果加以技术处理,让机器无法识别,也确实可以让deathbycaptcha等人工打码无法识别(只能识别英文数字),但是用户体验就差了。特别是用户当中有不识汉字的人..不太适合普遍情况。。

我们的目标是机器无法识别,deathbycaptcha等人工打码也无法识别...


1.使用手机来获取验证码,这样可以彻底避免上述问题..如果不可,用以下的方法
2.图片要有变形,如果可能用手写体,然后扫描上传切割。。显示拼接时需要再次变形
3.图片要实时生成,绝对不可以用库
4.文字要旋转方向
5.验证码提高到6位
6.文字要粘连在一起
7.增大干扰点与线条
8.使用复杂背景
9.使用框架文字,文字是一个框架形式,中间镂空
10.使用图案拼接文字,如用几个不同水果接成一个字母
11.验证码要保存在SESSION中,不要使用未加密COOKIE
12.显示图片时使用FLASH显示,防止被复制,通过HTTP传输图片时要加密
13。使用一款验证码识别工具进行检测,要将识别率降到1%以下..

经过以上处理,基本上可以对付程序识别了,但是仍然可以被deathbycaptcha等人工打码识别..接下来就要让人工打码也无法识别..仔细研究deathbycaptcha的缺点..发现汉字是无法识别,但是这个因为用户体验问题,只能使用英文和数字..

a.生成一付图片,上下左右各一个6位数验证码..
b.一个特殊FLASH指明用户输入上下左右其中一个验证码..此FLASH也要做防破解工作
c.输入验证码的控件使用FLASH做个安全加密输入框,其中内容加密..

这样,可以防止被deathbycaptcha等人工打码识别..因为图片与指示相分离了。只有网站用户可以看到指示。。。

 

 

posted @ 2012-09-02 02:41  attilaxAti  阅读(32)  评论(0编辑  收藏  举报