`
kenby
  • 浏览: 716815 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

cookie 实现验证码的原理

    博客分类:
  • web
阅读更多

验证码技术用来解决网络中的恶意注册或者 DDOS 攻击,主要原理是,让用户

输入图片中的文字,如果通过了验证,服务器就在客户端浏览器保存一个验证 cookie,

比如叫做 <secure_session, 9HcxOGJMhn5j7UpmguyA4ABD>

以后用户访问服务器其他页面的时候,服务器先获取这个 cookie, 如果存在,

说明验证通过, 不存在则让用户输入验证码。


事先制作验证码图片

服务器生成 n 张验证码图片,文件名就是验证码对应的字符串。比如 nBxY.jpg

服务器使用一个 map,用来保存 <index, code> 的序对,其中 index 从

1递增直到 n, code 是验证码字符串,也是图片的文件名。

<1, nBxy>

<2, aBed>

<3, iOlx>

......


服务器生成随机的验证码图片给用户

浏览器请求一个页面,服务器先检查浏览器是否有 secure_session 的 cookie,

如果没有,就让用户输入验证码,服务器就使用哈希的方法取一张验证码图片,

显示在浏览器,哈希方法的具体步骤是:

 

服务器根据访问时间和 ip 生成一个 md5,作为 key

key = md5(time, ip)

然后计算 key 的 hash值,对其取余,得到验证码图片的索引值

index = hash(key) % n

从服务器的 map 中查找索引值 index 对应的验证码图片,返回给浏览器

 

可见,key 可以确定一张验证码图片,后面一个步骤,需要把用户输入的验证码和

验证码图片对比,以判断用户输入是否正确,为了确定用户使用的是哪张图片,我们

把 key 值保存在浏览器,即把 <temp_session, key> 作为临时 cookie 保存在

浏览器上。


服务器如何验证

验证的时候,服务器从客户取得两个属性,一个是 key 值,可以通过 temp_session

取得,一个是用户输入的验证码。

key = get_cookie("temp_session")

code = request.getParameter("code")

服务器取 key 的目的是确认用户输入的是哪个验证码的图片,确认方法为:

根据 key 计算出索引值

index = hash(key) % n

从服务器的 map 中查找 index 对应的验证码,

然后拿这个验证码跟用户输入的验证码做比较,即可验证

是否合法。 如果合法就把正式的 cookie 保存在浏览器

分享到:
评论

相关推荐

    python实现带验证码网站的自动登陆实现代码

    Cookie的工作原理: Cookie由服务端生成,然后发送给浏览器,浏览器会将Cookie保存在某个目录下的文本文件中。在下次请求同一网站时,会发送该Cookie给服务器,这样服务器就知道该用户是否合法以及是否需要重新登录...

    Python爬虫实现验证码登录代码实例

    需要设置验证码登录,避免非人类的访问,Python爬虫实现验证码登录的原理则是先到登录页面将生成的验证码保存下来,然后人为输入后,包装后再POST给服务器,实现验证,这里还涉及到了Cookie,其实Cookie保存在本地...

    基于JavaScript短信验证码如何实现

    原理很简单,就是在用户点击”获取验证码”的时候,Ajax获取一串固定位数的数字,然后写数据库发短信,写Cookie设置验证码的有效期。 JS请求验证码如下: $.ajax({ type: GET, url: ../Ajax/smsrandcodetest.ashx?...

    JS实现发送短信验证后按钮倒计时功能(防止刷新倒计时失效)

    一般原理是“当点击发送按钮时,发送ajax请求到服务器发送短信验证码,成功则把发送按钮设置为不可点击,并且调用定时器,按钮显示倒计时”。如果就这样不对倒计时存储做处理,那么当刷新页面,会出现倒计时失效,...

    JAVA WEB典型模块与项目实战大全

    5.4 实现图形验证码  5.5 避免重复提交功能  5.6 缩略加水印图像  5.7 小结  第6章 网络硬盘  6.1 网络硬盘功能原理  6.2 网络硬盘功能具体实现——浏览磁盘和显示文件信息  6.3 网络硬盘功能具体...

    PHP网络编程技术与实践 源码

    8.1.1 Cookie简介及其工作原理 8.1.2 设置Cookie变量 8.1.3 接收和处理Cookie 8.1.4 删除Cookie变量 8.1.5 Cookie的有效范围和生存周期 8.2 Session的使用 8.2.1 初始化Session 8.2.2 在Session中注册变量 8.2.3 ...

    C#用户权限控制架构,可以控制到类

    cookie读取以及验证码生成 Lm.Common.Xml xml序列化与反序列化 权限控制原理 Lm.Common.Auth 帐号、角色、权限管理 Lm.Common.Auth.Database 权限管理相关的数据库结构 Lm.Common.Auth.Doc 权限管理的...

    vue+egg+jwt实现登录验证的示例代码

    原理:vue前端登录,提交账号密码给egg后端,后端比对信息后,使用jsonwebtoken对用户信息进行签名生成token,之后通过cookie返回给vue前端,前端需要使用token里的信息就使用js-base64进行token第二段解码即可。...

    Python入门网络爬虫之精华版

    它的工作原理是:从网页的url加载网页的源代码之后,会在浏览器里执行JavaScript程序。这些程序会加载更多的内容,“填充”到网页里。这就是为什么如果你直接去爬网页本身的url,你会找不到页面的实际内容。 这里,...

    最新Python3.5零基础+高级+完整项目(28周全)培训视频学习资料

    基于cookie实现定制显示数据条数 带签名的Cookie CBV和FBV用户认证装饰器 本周作业 第22周 上节回顾 Django之url、Views Django之Model操作 Django之模版 Django之Session Django之Session与Cookie Django之CSRF...

    php网络开发完全手册

    17.4 PHP中Cookie的实现 290 17.4.1 Cookie语法格式 290 17.4.2 Cookie预定义数组 290 17.4.3 创建一个Cookie 291 17.4.4 创建一个有时间限制的Cookie 291 17.4.5 创建一个有范围限制的Cookie 292 17.4.6 删除Cookie...

    史上最全韩顺平传智播客PHP就业班视频,10月份全集

    9-21 4.cookie①-cookie原理介绍 创建cookie 获取cookie 9-21 5.cookie②-更新cookie 删除cookie cookie运用案例 9-21 6.cookie③-雇员管理系统使用cookie技术 1.显示上传登录时间2.保留登录id 9-23 1回顾 9-23 2....

    (全)传智播客PHP就业班视频完整课程

    9-21 4.cookie①-cookie原理介绍 创建cookie 获取cookie 9-21 5.cookie②-更新cookie 删除cookie cookie运用案例 9-21 6.cookie③-雇员管理系统使用cookie技术 1.显示上传登录时间2.保留登录id 9-23 1回顾 9-23 2....

    史上最全传智播客PHP就业班视频课,8月份视频

    9-21 4.cookie①-cookie原理介绍 创建cookie 获取cookie 9-21 5.cookie②-更新cookie 删除cookie cookie运用案例 9-21 6.cookie③-雇员管理系统使用cookie技术 1.显示上传登录时间2.保留登录id 9-23 1回顾 9-23 2....

    网站架构技术

    减少cookie传输, 静态资源使用独立域名访问 CDN加速 反向代理 应用服务器性能优化 分布式缓存 缓存的原理 合理使用缓存 频繁修改的数据 没有热点的访问 数据不一致和脏读 缓存可用...

    韩顺平PHP JS JQUERY 所有视频下载种子 货真价实

    9-21 4.cookie①-cookie原理介绍 创建cookie 获取cookie 9-21 5.cookie②-更新cookie 删除cookie cookie运用案例 9-21 6.cookie③-雇员管理系统使用cookie技术 1.显示上传登录时间2.保留登录id 9-23 1回顾 9-23 2....

    史上最全韩顺平传智播客PHP就业班视频,9月份全集

    9-21 4.cookie①-cookie原理介绍 创建cookie 获取cookie 9-21 5.cookie②-更新cookie 删除cookie cookie运用案例 9-21 6.cookie③-雇员管理系统使用cookie技术 1.显示上传登录时间2.保留登录id 9-23 1回顾 9-23 2....

    PHP100视频教程全集112集BT种子【PHP经典】

    PHP100视频教程32:PHP5中Cookie与 Session详解 PHP100视频教程33:PHP5中图片验证码的制作(上) PHP100视频教程34:PHP5中图片中文验证码(下) PHP100视频教程35:PHP5文字图片混合水印与缩略图 PHP100视频...

    韩顺平sevlet,jsp视频教程知识点.txt

    网上商城(mvc) 1.1购物车、用户注册、登录、验证码 1.2订单管理、后台、动态广告 1.3javamail 1.4javascript 1.5css/ajax 1.6文件上传下载 1.7网页如何布局(table+css)(div+css) 2. 项目分析、数据库设计、界面设计 ...

    python入门到高级全栈工程师培训 第3期 附课件代码

    05 操作系统安装原理 06 linux操作系统安装 07 初识linux命令 08 linux操作系统目录结构 09 目录及文件操作 第4章 01 上节课复习 02 创建用户相关的文件 03 用户增删该查及组相关操作 04 对文件的权限管理 05 对...

Global site tag (gtag.js) - Google Analytics