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://www.cnblogs.com/attilax/

Atiend

atitit  验证码理论与概览与 验证码规范 解决方案.docx的更多相关文章

  1. 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 手写文字识别   ...

  2. 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 ...

  3. 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 ...

  4. Atitit 快速开发的推荐技术标准化 规范 大原则

    Atitit 快速开发的推荐技术标准化 规范 大原则 1. 如何评估什么样的技术适合快速开发??1 1.1. (重要)判断语言层次..层次越高开发效率越高  4gl  dsl> 3.5gl &g ...

  5. Atitit webservice发现机制 WS-Discovery标准的规范attilax总结

    Atitit webservice发现机制 WS-Discovery标准的规范attilax总结 1.1. WS-Discovery标准1 1.2. 一.WS-Discovery1 1.2.1.   ...

  6. Atitit.自然语言处理--摘要算法---圣经章节旧约39卷概览bible overview v2 qa1.docx

    Atitit.自然语言处理--摘要算法---圣经章节旧约39卷概览bible overview v2 qa1.docx 1. 摘要算法的大概流程2 2. 旧约圣经 (39卷)2 2.1. 与古兰经的对 ...

  7. Atitit cms wordpress get_post  返回的WP_Post 规范 标准化

    Atitit cms wordpress get_post  返回的WP_Post 规范 标准化 public $ID; public $post_author = 0; * The post's l ...

  8. Atitit usbQb212 oo 面向对象封装的标准化与规范解决方案java c# php js

    Atitit usbQb212 oo 面向对象封装的标准化与规范解决方案java c# php js 1.1. 封装性是面象对象编程中的三大特性之一  三个基本的特性:封装.继承与多态1 1.2. 魔 ...

  9. atitit.RESTful服务的概览and框架选型

    atitit.RESTful服务的概览and框架选型 1. REST基础概念: 1 2. URL说明: 1 3.  1 4. RESTful框架选型 2 1. spring mvc( recomm) ...

随机推荐

  1. C#装箱和拆箱

    1.装箱是将值类型转换为引用类型(或者转换为此值类型所实现的任何接口类型)的隐式转换,当 CLR 对值类型进行装箱时,会将该值包装到 System.Object 内部,再将后者存储在托管堆上. ; / ...

  2. 关于angular的一些新手容易忽略的小知识点

    1.解决页面刚加载时使用{{name}}这种方式绑定数据会有一瞬间的表达式显示的问题 方法一:  使用ng-bind来绑定数据, 方法二:  添加ng-cloak指令:如 <div ng-app ...

  3. 禁止Visual Studio中的编译警告

    VC编译器有个很蛋痛的自家警告系统,默认下各种开源库比如CGAL,各种4996,而一般自己写的 如sscanf,fopen这种单个文件,在文件头加个 #pragma warning (disable ...

  4. Freemarker常用指令使用范例

    我的開發環境 框架:           springmvc+freemarker 開發工具:    springsource-tool-suite-2.9.0 JDK版本:    1.6.0_29 ...

  5. Tomcat中使用JNDI加载JDBC数据源

    以前写JDBC的时候总是手工写一个类,用硬代码写上className.url.用户名和密码什么的,然后通过DriverManager获取到Connection.那样写是很方便,但是如果想更改的话,需要 ...

  6. matlab资源

    百度网盘  链接:http://pan.baidu.com/s/1c06ikEW 密码:9dpt包含matlab6.5,7,7.01,7.04,7.1,Matlab2006b(7.3),Matlab  ...

  7. 使用 xcode 8 构建版本 iTunes Connect 获取不到应用程序的状态的解决办法

              Archive生成Release版本的ipa并将其提交到iTunesConnect,上传成功后我打开iTunesConnect网站登录我的开发账号,准备提交版本更新,然而我却找不到 ...

  8. 简单的比大小 shell 脚本和ping

    #!/bin/bash echo "输入第一个数字"read Aecho "输入第二个数字"read B if [ $A -gt $B ] thenecho & ...

  9. .net framework 版本汇总

    Version Release Date 1.0.3705.0 1RTM 2002/2/13 1.0.3705.209 1SP1 2002/3/19 1.0.3705.288 1SP2 2002/8/ ...

  10. addScalar 显式指定返回数据的类型

    sql: select a.id as 受理 from a SQLQuery sqlQuery=this.getSession().createSQLQuery(sb.toString()).addS ...