首页 > 其他 > 详细

QapTcha 滑动验证码工具--工作原理分析

时间:2015-11-24 09:55:26      阅读:801      评论:0      收藏:0      [点我收藏+]

QapTcha 是一个网页上另外一种形式的验证码工具,通过拉动滚动条来解锁表单的提交动作。官网的地址已经失效,不知为何,国内在这里找到:OSCHINA


QapTcha 演示,点击下载


以下直奔主题,先看工作原理:


技术分享

从上述时序图可见,当用户进入页面时,Qaptcha调用GeneratePass,分别生成两个字符串,分别是 name(32)和value(7)的值,并向页面注入一个Hidden类型的Input控件,随后,用户滑动Qaptcha触发向服务端的Ajax请求,服务端接收请求后,将传递过来的qaptcha_key(即,GeneratePass生成的32位字符串)新建一个名为 qaptcha_key的Session,用于后续提交动作的验证;然后,服务端返回Session建立是否成功(result{error:true | false},最后,若result为false,客户端脚本将清空qaptchaInput控件(hidden input)的value。

当用户执行提交操作,客户端将POST一个qaptchaInput的value为空的请求,服务端验证以  Session["qaptcha_key"]是存在,且,值不为空  && qaptchaInput的value为空 的情况 为 真,即 通过验证,并执行后续操作;最终释放 Session["qaptcha_key"]。


针对这一原理,与淘宝的注册/登录中使用的滑动验证工具类同,但,算法截然不同。 就目前Qaptcha的实现方式而言,作为验证码的代替工具不太可取,“形同虚设”。后续文章将对这一观点作细节分析说明,以下先抛出几个值得思考的问题:

1)建立Session["qaptcha_key"]的请求地址明确得取的情况下,通过模拟POST请求或使用webbrowser的document对象进行模拟网页操作,是否就能在服务端建立这一Session?

2)通过模拟POST请求或使用webbrowser的document对象令qaptchaInput的值为空,是否就无视了服务端的所谓的“真”判断?

3)如果服务端不是简单地建立一个Session,而考虑往客户端返回一些其无法自行构造 ,且,与当前Session唯一对应的值,则,能否更有效杜绝客户端模拟或演算验证所需的项和值?

本文出自 “企升创展” 博客,请务必保留此出处http://uppower.blog.51cto.com/1759096/1716192

QapTcha 滑动验证码工具--工作原理分析

原文:http://uppower.blog.51cto.com/1759096/1716192

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!