atitit 验证码理论与概览与 验证码规范 解决方案.docx
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相关推荐
- 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 ...
- php怎样验证验证码对错,PHP生成中文验证码并检测对错实例
PHP生成中文验证码并检测对错实例,中文验证码的例子还是比较少的,今天给大家分享一下,支持自定义中文.字体.背景色等 生成验证码,注意font字体路径要对,否则显示图片不存在session_start ...
- python图像验证码识别_python 简单图像识别--验证码
python 简单图像识别--验证码 记录下,准备工作安装过程很是麻烦. 首先库:pytesseract,image,tesseract,PIL windows安装PIL,直接exe进行安装更方便( ...
- selenium 验证码识别_如何获取验证码?
工作中,如何用python和selenium提取验证码呢? 获取验证码的方法 按照以往的经验,有4种方法: 让开发帮忙去掉验证码代码,重新部署环境 弄个万能验证码,每次登陆都可以登陆 用cookie添 ...
- Atitit 常用sdk 模块 组织架构切分 规范与范例attilax总结
Atitit 常用sdk 模块 组织架构切分 规范与范例attilax总结 常用200个模块 2017/04/12 22:01 <DIR> acc 2017/04 ...
- 【计算理论】计算复杂性 ( 阶段总结 | 计算理论内容概览 | 计算问题的有效性 | 语言与算法模型 | 可计算性与可判定性 | 可判定性与有效性 | 语言分类 ) ★
文章目录 一.计算理论内容概览 二.计算问题的 有效性 三.语言 与 算法模型 四.可计算性 与 可判定性 五.可判定性 与 有效性 六.语言分类 一.计算理论内容概览 计算理论分为 形式语言与自动机 ...
- 【计算理论】计算复杂性 ( 计算理论内容概览 | 计算问题的有效性 | 时间复杂性度量 | 输入表示 | 时间复杂度 )
文章目录 一.计算理论内容概览 二.计算问题的判定性 三.计算问题的 有效性 四.时间复杂性度量 五.算法有效性 数学定义需求 六.输入表示 七.时间复杂度 一.计算理论内容概览 计算理论分为 形式语 ...
- php 验证码文件,php实现的验证码文件类实例
本文实例讲述了php实现的验证码文件类.分享给大家供大家参考.具体如下: /** * @file * @version 1.0 * @author 网海浪子 * @brief 验证码文件类 * */ ...
- Python3 爬虫学习笔记 C14【验证码对抗系列 — 点触验证码】
Python3 爬虫学习笔记第十四章 -- [验证码对抗系列 - 点触验证码] 文章目录 [14.1]关于点触验证码 [14.2]点触验证码攻克思路 [14.3]模拟登录 12306 - 总体思路 [ ...
- python爬虫绕过验证码_爬虫怎样绕过验证码?
叶湘伦:[文字篇]如何系统地自学 Python?zhuanlan.zhihu.com 1,cookie登录利用cookie的特性:cookie会保持较长的时间,来避免用户频繁登录 cookie一般由 ...
最新文章
- 水晶报表-控制结构-For 循环(Crystal 语法)
- java编写在输入特定日期之间_java实现输入日期
- 由已打开的文件读取数据---read
- 八段锦八个动作名称_八段锦工间操“动”起来 全民健身精气神“燃”起来
- linux中备份mysql数据库命令_linux备份mysql数据库命令
- java sort 字符串_java字符串怎么排序
- 前端程序员专用的在线工具箱
- 腾讯云北京技术沙龙邀请函:AI技术全面场景化落地实践
- 剪映怎么导入mkv_mkv用什么播放器打开_什么播放器可以打开mkv格式-系统城
- 阿里云上海云栖大会上宣布多款核心云计算产品降价 最高降幅达50%
- MySQL Workbench 8.0 默认没有开启Metadata and internal Schemas
- 个人永久性免费-Excel催化剂功能第85波-灵活便捷的批量发送短信功能(使用腾讯云接口)...
- Layui官网地址官网仓库
- 《Thinking In Java》作者:不要使用并发!
- 前端websocket和后端传输数据
- ebcdic java_在Java中将EBCDIC转换为ASCII
- 手机+卫星,到底有多难?
- 自动驾驶(七十二)---------LQR控制算法
- 服务器性能测试方法,服务器性能测试方法
- 商汤发布象棋机器人『元萝卜』;『南瓜书』西瓜书公式推导解析;代码自动美化插件;Tock建立对话机器人的AI平台;前沿论文 | ShowMeAI资讯日报
热门文章
- nodejs redis 发布订阅_Redis 发布/订阅(Pub/Sub)
- python逻辑型数据也叫什么_python基础(三)python数据类型
- Java http响应状态码_如何获得HttpClient返回状态码和响应正文?
- Windows下vim方式操作软件+Gvim使用
- Putty CentOS SSH 总是自动断开连接
- 7 月编程语言指数榜:Python 与 Java 逐渐拉开差距
- 1)hadoop集群搭建
- flex bison 下载
- c++中的243、251、250错误原因
- mysql数据库学习——2,数据库的选定,创建,删除和变更