atitit 验证码理论与概览与 验证码规范 解决方案.docx
atitit 验证码理论与概览与 验证码规范 解决方案.docx
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://www.cnblogs.com/attilax/
Atiend
atitit 验证码理论与概览与 验证码规范 解决方案.docx的更多相关文章
- Atitit s2018.2 s2 doc list on home ntpc.docx \Atiitt uke制度体系 法律 法规 规章 条例 国王诏书.docx \Atiitt 手写文字识别 讯飞科大 语音云.docx \Atitit 代码托管与虚拟主机.docx \Atitit 企业文化 每日心灵 鸡汤 值班 发布.docx \Atitit 几大研发体系对比 Stage-Gat
Atitit s2018.2 s2 doc list on home ntpc.docx \Atiitt uke制度体系 法律 法规 规章 条例 国王诏书.docx \Atiitt 手写文字识别 ...
- 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 ...
- Atitit s2018.6 s6 doc list on com pc.docx Atitit s2018.6 s6 doc list on com pc.docx Aitit algo fix 算法系列补充.docx Atiitt 兼容性提示的艺术 attilax总结.docx Atitit 应用程序容器化总结 v2 s66.docx Atitit file cms api
Atitit s2018.6 s6 doc list on com pc.docx Atitit s2018.6 s6 doc list on com pc.docx Aitit algo fi ...
- Atitit 快速开发的推荐技术标准化 规范 大原则
Atitit 快速开发的推荐技术标准化 规范 大原则 1. 如何评估什么样的技术适合快速开发??1 1.1. (重要)判断语言层次..层次越高开发效率越高 4gl dsl> 3.5gl &g ...
- Atitit webservice发现机制 WS-Discovery标准的规范attilax总结
Atitit webservice发现机制 WS-Discovery标准的规范attilax总结 1.1. WS-Discovery标准1 1.2. 一.WS-Discovery1 1.2.1. ...
- Atitit.自然语言处理--摘要算法---圣经章节旧约39卷概览bible overview v2 qa1.docx
Atitit.自然语言处理--摘要算法---圣经章节旧约39卷概览bible overview v2 qa1.docx 1. 摘要算法的大概流程2 2. 旧约圣经 (39卷)2 2.1. 与古兰经的对 ...
- Atitit cms wordpress get_post 返回的WP_Post 规范 标准化
Atitit cms wordpress get_post 返回的WP_Post 规范 标准化 public $ID; public $post_author = 0; * The post's l ...
- Atitit usbQb212 oo 面向对象封装的标准化与规范解决方案java c# php js
Atitit usbQb212 oo 面向对象封装的标准化与规范解决方案java c# php js 1.1. 封装性是面象对象编程中的三大特性之一 三个基本的特性:封装.继承与多态1 1.2. 魔 ...
- atitit.RESTful服务的概览and框架选型
atitit.RESTful服务的概览and框架选型 1. REST基础概念: 1 2. URL说明: 1 3. 1 4. RESTful框架选型 2 1. spring mvc( recomm) ...
随机推荐
- doxygen的使用(一)配置并生成文档
原创文章,欢迎阅读,禁止转载. doxygen是个好用的文档生成工具,他的强大功能有很多介绍,我就不说了.自带的chm帮助手册很全面,包括功能.注释规范.怎么配置.工具用法等.doxygen的用法共3 ...
- 通过 JDBC 驱动程序使用大容量复制
Microsoft SQL Server 包含一个名为 bcp 的受欢迎的命令行实用工具,以便将较大文件快速大容量复制到 SQL Server 数据库的表或视图中. SQLServerBulkCopy ...
- TeamViewer11使用教程
下载地址(官网):http://res.ncmem.com/download/TeamViewer11.exe 下载地址(360):https://yunpan.cn/cvxRiTfSC3iH6(访问 ...
- Java日志系统及框架分析
最近在考虑将容器(Tomcat)内的应用日志统一成slf4j + logback,主要目的有: 快速定位应用日志输出路径,方便日志的采集: 能动态调整日志的级别,方便线上问题定位: 方便在容器层面做扩 ...
- 第七章 内存管理单元MMU介绍
7.1 内存管理单元MMU介绍 7.1.1 S3C2410/S3C2440 MMU特性 负责虚拟地址到物理地址的映射,并提供硬件机制的内存访问权限检查 特性: 与ARM V4兼容的映射长度.域.访问权 ...
- PADSPCB权威指南-第一章 PADS软件系统(部分)(原创)
PADSPCB权威指南-第一章(部分)豆丁地址:http://www.docin.com/p-707128286.html
- android开发学习之Level List篇
Level List google 说明:A Drawable that manages a number of alternate Drawables, each assigned a maximu ...
- Linux网卡bounding详解
多块网卡绑在一起,作为一个网卡用,实现负载均衡和提高带宽 linux双网卡绑定一个IP地址,实质工作就是使用两块网卡虚拟为一块,使用同一个IP地址,是我们能够得到更好的更快的服务.其实这项技术在 ...
- C#多线程学习
一.线程的定义 进程(Process)是Windows系统中的一个基本概念,它包含着一个运行程序所需要的资源.进程之间是相对独立的,一个进程无法访问另一个进程的数据(除非利用分布式计算方式),一个进程 ...
- bzoj 3718
题意:戳这里 思路:很容易发现对于一个车能否移动到最终的位置只要判断路径中得最大高度与自身高端之和是否>w即可. 那么就可以转化为逆序对得最大数问题..即对于每一辆车,判断有那些最初在他前面,而 ...