图片验证最常用在防恶意注册的场景,但传统图片验证方法的缺点在于需在服务器端维护这些随机生成的验证码字符串,所以实质上只是将恶意注册的影响从数据库转移到了内存,维护这个内存资源仍然会带来一些麻烦,包括定期清理,且仍要在一定程度上考虑防恶意获取验证码。

下面介绍一种无需在服务器端维护验证码字符串的方法。

我们假设服务器数据库用户表中的用户名字段的值必须是唯一的(这很常见),我们借助一个加密或者哈希算法,这样每个用户名对应的加密字符串在统计上也可以认为是唯一的。当新用户申请注册的时候,先提交这个用户名给服务器作有效性检查,如果数据库中没有这个用户名,则可注册,这时再用这个加密或者哈希算法将这个可用的用户名加密,返回这个加密的值的图像数据给客户端。(因为客户端不知道加密密钥,又不好破解加密算法,所以只能老老实实按图像值输入)

随后客户端进入正式注册阶段,客户端将这个图像的对应字符串和刚才验证通过的用户名再次递交给服务器,服务器再次用同样的算法加密这个用户名,并将加密出的值和客户端传来的字符串相比较,如果相同,则向数据库提交注册。客户端也无法使用以前的验证数据来欺骗服务器,因为验证数据必须包含用户名,验证数据若有效则用户名必定已存在于数据库中,这样是不可能插入成功的。

其实这个算法巧妙地借助了数据库某个字段值唯一性的特点,巧妙地复用了数据库的功能。

优点:无需维护Session,对于服务器系统,越少维护这样的“全局变量”越利于减少出错几率。

缺点:(可能,没测过,很有可能不是缺点)加密算法消耗的CPU时间要高于字典、hash算法(Session是需要通过字典或者hash算法获取数据的)

只讲原理

转载于:https://www.cnblogs.com/WYB/archive/2008/07/01/1232785.html

传统图片验证算法的缺点及改进(原理篇)相关推荐

  1. 冯诺依曼计算机缺点,冯。诺依曼型计算机的缺点及改进方法.docx

    文档介绍: 冯.诺依曼型计算机的缺点及改进方法 从计算机诞生那天起,冯 .诺依曼体系结构占据着主导地位,几十年来计算机体系 结构理论并没有新理论出现.随着计算机应用范围的迅速扩大,使用计算机解决的问 ...

  2. 乱序图片 极验_极验验证吴渊:传统图片验证方式已经无效了!

    吴渊,极意网络CEO 黑五月频发的宕机门告诉我们:数据安全,所有创业者都应该关注! 让我们来听听IDG资本的两位投资人大佬的深刻分析,以及5家创业公司CEO/CTO大拿的深切呼吁吧!--这里不止有干货 ...

  3. 彩色星球图片生成3:代码改进(pytorch版)

    彩色星球图片生成3:代码改进(pytorch版) 1. 修改 1.1 预处理缩放 1.2 随机翻转 1.3 修改全局判别器 1.4 修改进度打印 2. 效果 3. 总结 上一集: 彩色星球图片生成2: ...

  4. ResNet改进原理介绍论文笔记

    ResNet改进原理介绍论文笔记 Identity Mappings in Deep Residual Networks Abstract 深度剩余网络是一系列极深的体系结构,显示出令人信服的准确性和 ...

  5. DL之DNN优化技术:神经网络算法简介之GD/SGD算法(BP的梯度下降算法)的简介、理解、代码实现、SGD缺点及改进(Momentum/NAG/Ada系列/RMSProp)之详细攻略

    DL之DNN优化技术:神经网络算法简介之GD/SGD算法(BP的梯度下降算法)的简介.理解.代码实现.SGD缺点及改进(Momentum/NAG/Ada系列/RMSProp)之详细攻略 目录 GD算法 ...

  6. win10照片查看器_win10系统,图片查看器不见了咋办?教你调出传统图片查看器。...

    点击上方"高效黑科技软件"→点击右上角" ... "→选"设为星标★" 大家好,我是小黑. 最近比较忙,没有打理公众号,今天说啥也要更一篇, ...

  7. 彩色图片转手绘线稿的原理简述与Python实现

    大家好,我是小小明,在学习 好友叶庭云 介绍的一门中国大学MOOC的课程中,学到手绘图像,下面我测试并总结一下. 课程链接是:https://www.icourse163.org/course/BIT ...

  8. bp算法运行太慢_BP算法的缺点与改进

    BP 算法的缺点与改进 目前, BP 网络得到了越来越广泛的应用,但是 BP 算法在应用中也同时暴露出一定的缺陷 : l) 训练次数多,学习效率低,收敛速度慢 ; 2) 易形成局部极小 ; ' 3) ...

  9. 深入浅出 GAN·原理篇文字版(完整)

    深入浅出 GAN·原理篇文字版(完整)|干货 机翼技术 百家号 05-29 02:02 导语 这次的内容主要是想梳理 GAN 从 NIPS 2014 被提出,到 2017年5月,都有哪些重要的从原理和 ...

最新文章

  1. python二进制打开(rb)和文本格式打开(r)什么区别?
  2. Greenplum 优化CASE - 对齐JOIN字段类型,使用数组代替字符串,降低字符串处理开销,列存降低扫描开销...
  3. 对eventloop的研究
  4. MFC_CFileDialog_选择单一文件
  5. mysql外键读锁_MySQL的锁
  6. .Net中俩种使用不定参数的方法
  7. [JavaME]利用java.util.TimerTask来做Splash Screen的N种方法
  8. 每周更新:Markdown1.1.7 、Nacos1.0.0 GA 、CKFinder3.5、Apache POI 4.1.0等新版本发布
  9. RabbitMQ五种工作模式学习总结
  10. 【计量经济学导论】09. 协整与误差修正模型
  11. 如何高效实现内外网切换?是个网络工程师,都在用它
  12. 第七篇:A133 Android 10 触摸提示音过大
  13. 一、OpenTCS4.12 创建一个新的通信驱动
  14. 转载(工信部):张欣 辽宁奇辉电子系统工程有限公司
  15. AUTOSAR Diagnostic
  16. 随机过程(一)基础概念与随机过程基本类型
  17. 架构设计过程【DDDD笔记】
  18. 相片尺寸怎么修改?手机如何整体缩小图片尺寸?
  19. java lambda 画蛇添足_技术史上的画蛇添足: Redis HGETALL 排序问题
  20. Idea查看所有断点

热门文章

  1. React开发(229):react删除的实现
  2. [html] 一般习惯把js写在</body>前,但有例外的情况吗?说说看
  3. 工作77::配置id传值地址
  4. 工作45:注意公用方法 别混入
  5. “约见”面试官系列之常见面试题之第一百篇之响应路由参数的变化(建议收藏)
  6. 前端学习(2012)vue之电商管理系统电商系统之手动为upload组件添加请求头
  7. “睡服”面试官系列第十八篇之generator函数的语法(建议收藏学习)
  8. 前端学习(7):web的三大技术
  9. 第九十六期:JavaScript 中的 4 个相等比较算法的介绍
  10. java学习(94):cpu随机调用线程测试