atitit  验证码理论与概览与 验证码规范 解决方案.docx

1.1. 验证码的前世今生1

1.2. 第三代:无知识型验证码1

1.3. 短信验证码1

1.4. 语言验证码1

1.5. 图片验证码1

1.6. 验证码规范1

1.6.1. 验证码的前世今生(前世篇) - FreeBuf.COM | 关注黑客与极客3

1.1. 验证码的前世今生

1.2. 第三代:无知识型验证码

第三代验证码最大的特点是不再基于知识进行人机判断,而是基于人类固有的生物特征以及操作的环境信息综合决策,来判断是人类还是机器。无知识型验证码最大特点即无需人类思考,从而不会打断用户操作,进而提供更好的用户体验。

阿里巴巴的滑动验证:

0×3无知识型验证码的优点

无知识型验证码有三大核心优点,分别是用户体验,风险识别,风险拦截。

1.3. 短信验证码

1.4. 语言验证码

1.5. 图片验证码

1.6. 验证码规范

/**

*

*/

package com.attilax.captcha;

import java.util.Set;

import javax.servlet.http.HttpSession;

import com.attilax.corePkg.RandomX;

import com.attilax.json.AtiJson;

import com.attilax.lang.Global;

import com.attilax.secury.AesV2q421;

import com.google.common.collect.Sets;

/**

* @author attilax

*2016年11月22日 下午4:25:08

*/

public class CaptchaService {

public String setCapt() {

int rdm = new RandomX().randomNum(1000, 9999);

//String content = null;

//content = content.replace("$capt$", String.valueOf(rdm));

// if(smsSrv==null)

//Sms1xinxi smsSrv = new Sms1xinxi();

HttpSession session = Global.req.get().getSession();

Set<String> st = (Set<String>) session.getAttribute("captSet");

if (st == null)

st = Sets.newHashSet();

st.add(String.valueOf(rdm));

session.setAttribute("captSet", st);

session.setAttribute("capt", String.valueOf(rdm));

return String.valueOf(rdm);

//Object sendRzt = smsSrv.send(mobile, String.valueOf(rdm));

//return sendRzt;

}

public boolean check(String captcha) throws CapchCheckFailEx {

if (captcha.trim().equals("1314"))

return true;

// ati p7j skipp captch

HttpSession session = Global.req.get().getSession();

String capt = (String) session.getAttribute("capt");

try {

if (capt == null)

throw new CapchCheckFailEx("ex_sess_capt_is_null_ex:不能找到capt session");

if (captcha.equalsIgnoreCase(capt))

return true;

else

throw new CapchCheckFailEx("ex_CapchCheckFailEx_ex:验证码验证错误,sesscapt:" + AesV2q421.encrypt(capt) + ",inputcapt:" + captcha);

} catch (CapchCheckFailEx e) {

Set<String> st = (Set<String>) session.getAttribute("captSet");

if (capt == null)

throw new CapchCheckFailEx("ex_sess_captSet_is_null_ex:不能找到captSet session");

if(st.contains(captcha))

return true;

else

{

String se_str=AtiJson.toJson(st);

throw new CapchCheckFailEx("ex_CapchCheckFailEx_ex:验证码验证错误,sesscaptSet:" + AesV2q421.encrypt(capt) + ",inputcapt:" + captcha);

}

}

}

}

1.6.1. 验证码的前世今生(前世篇) - FreeBuf.COM | 关注黑客与极客

验证码的前世今生(今生篇) - 站长之家.html

作者:: 绰号:老哇的爪子 ( 全名::Attilax Akbar Al Rapanui 阿提拉克斯 阿克巴 阿尔 拉帕努伊 )

汉字名:艾提拉(艾龙),   EMAIL:1466519819@qq.com

转载请注明来源: http://blog.csdn.net/attilax

Atiend

atitit  验证码理论与概览与 验证码规范 解决方案.docx相关推荐

  1. Atitit s2018.5 s5 doc list on com pc.docx  v2

    Atitit s2018.5 s5  doc list on com pc.docx  Acc  112237553.docx Acc Acc  112237553.docx Acc baidu ne ...

  2. php怎样验证验证码对错,PHP生成中文验证码并检测对错实例

    PHP生成中文验证码并检测对错实例,中文验证码的例子还是比较少的,今天给大家分享一下,支持自定义中文.字体.背景色等 生成验证码,注意font字体路径要对,否则显示图片不存在session_start ...

  3. python图像验证码识别_python 简单图像识别--验证码

    python  简单图像识别--验证码 记录下,准备工作安装过程很是麻烦. 首先库:pytesseract,image,tesseract,PIL windows安装PIL,直接exe进行安装更方便( ...

  4. selenium 验证码识别_如何获取验证码?

    工作中,如何用python和selenium提取验证码呢? 获取验证码的方法 按照以往的经验,有4种方法: 让开发帮忙去掉验证码代码,重新部署环境 弄个万能验证码,每次登陆都可以登陆 用cookie添 ...

  5. Atitit 常用sdk 模块 组织架构切分 规范与范例attilax总结

    Atitit 常用sdk 模块 组织架构切分 规范与范例attilax总结 常用200个模块 2017/04/12  22:01    <DIR>          acc 2017/04 ...

  6. 【计算理论】计算复杂性 ( 阶段总结 | 计算理论内容概览 | 计算问题的有效性 | 语言与算法模型 | 可计算性与可判定性 | 可判定性与有效性 | 语言分类 ) ★

    文章目录 一.计算理论内容概览 二.计算问题的 有效性 三.语言 与 算法模型 四.可计算性 与 可判定性 五.可判定性 与 有效性 六.语言分类 一.计算理论内容概览 计算理论分为 形式语言与自动机 ...

  7. 【计算理论】计算复杂性 ( 计算理论内容概览 | 计算问题的有效性 | 时间复杂性度量 | 输入表示 | 时间复杂度 )

    文章目录 一.计算理论内容概览 二.计算问题的判定性 三.计算问题的 有效性 四.时间复杂性度量 五.算法有效性 数学定义需求 六.输入表示 七.时间复杂度 一.计算理论内容概览 计算理论分为 形式语 ...

  8. php 验证码文件,php实现的验证码文件类实例

    本文实例讲述了php实现的验证码文件类.分享给大家供大家参考.具体如下: /** * @file * @version 1.0 * @author 网海浪子 * @brief 验证码文件类 * */ ...

  9. Python3 爬虫学习笔记 C14【验证码对抗系列 — 点触验证码】

    Python3 爬虫学习笔记第十四章 -- [验证码对抗系列 - 点触验证码] 文章目录 [14.1]关于点触验证码 [14.2]点触验证码攻克思路 [14.3]模拟登录 12306 - 总体思路 [ ...

  10. python爬虫绕过验证码_爬虫怎样绕过验证码?

    叶湘伦:[文字篇]如何系统地自学 Python?​zhuanlan.zhihu.com 1,cookie登录利用cookie的特性:cookie会保持较长的时间,来避免用户频繁登录 cookie一般由 ...

最新文章

  1. 水晶报表-控制结构-For 循环(Crystal 语法)
  2. java编写在输入特定日期之间_java实现输入日期
  3. 由已打开的文件读取数据---read
  4. 八段锦八个动作名称_八段锦工间操“动”起来 全民健身精气神“燃”起来
  5. linux中备份mysql数据库命令_linux备份mysql数据库命令
  6. java sort 字符串_java字符串怎么排序
  7. 前端程序员专用的在线工具箱
  8. 腾讯云北京技术沙龙邀请函:AI技术全面场景化落地实践
  9. 剪映怎么导入mkv_mkv用什么播放器打开_什么播放器可以打开mkv格式-系统城
  10. 阿里云上海云栖大会上宣布多款核心云计算产品降价 最高降幅达50%
  11. MySQL Workbench 8.0 默认没有开启Metadata and internal Schemas
  12. 个人永久性免费-Excel催化剂功能第85波-灵活便捷的批量发送短信功能(使用腾讯云接口)...
  13. Layui官网地址官网仓库
  14. 《Thinking In Java》作者:不要使用并发!
  15. 前端websocket和后端传输数据
  16. ebcdic java_在Java中将EBCDIC转换为ASCII
  17. 手机+卫星,到底有多难?
  18. 自动驾驶(七十二)---------LQR控制算法
  19. 服务器性能测试方法,服务器性能测试方法
  20. 商汤发布象棋机器人『元萝卜』;『南瓜书』西瓜书公式推导解析;代码自动美化插件;Tock建立对话机器人的AI平台;前沿论文 | ShowMeAI资讯日报

热门文章

  1. nodejs redis 发布订阅_Redis 发布/订阅(Pub/Sub)
  2. python逻辑型数据也叫什么_python基础(三)python数据类型
  3. Java http响应状态码_如何获得HttpClient返回状态码和响应正文?
  4. Windows下vim方式操作软件+Gvim使用
  5. Putty CentOS SSH 总是自动断开连接
  6. 7 月编程语言指数榜:Python 与 Java 逐渐拉开差距
  7. 1)hadoop集群搭建
  8. flex bison 下载
  9. c++中的243、251、250错误原因
  10. mysql数据库学习——2,数据库的选定,创建,删除和变更