行为验证,如何兼顾安全性与用户体验(下)
作者:互联网
云片新一代行为验证
前端连接
网页端
兼容性
支持Chrome,IE9 +,360,腾讯,搜狗,Safari,Firefox,Opera;主流手机浏览器
初始化SDK JS
注:IE9 +需要在SDK之前另外发布polyfill,示例如下
配置验证对象
新的YpRiddler(options)
选项对象为配置对象,以下为配置参数:
参数 | 类型 | 必填 | 备注 |
---|---|---|---|
成功 | 函数(validInfo:object,close:function) | ÿ | 监听验证成功事件。validInfo:验证成功返回参数(令牌,身份验证);关闭:关闭验证窗口 |
appId | 细绳 | ÿ | 应用标识。 |
版本 | 细绳 | ÿ | 接口版本号 |
容器 | HTMLElement | ÿ | 验证逻辑绑定的元素 |
noButton | 布尔值 | F | 是否在container内渲染按钮,当mode不为flat时有效 |
模式 | 细绳 | F | UI插入方式。flat-直接嵌入,float-浮动,dialog-样式,external-外置滑动(初始化滑块时才浮现验证图片,仅适用于滑动拼图验证)默认对话框 |
onError | 功能 | F | 验证异常处理器。即当云片验证服务出现异常时,可以在此之后上处理,某些,不使用验证,或者,使用图片验证服务等。 |
失败 | 函数(代码:int,消息:字符串,重试:函数) | F | 用户验证失败处理器,代码:错误码,msg:错误信息,重试:重试验证逻辑。 |
开始之前 | 函数(下一个:函数) | F | 进入验证逻辑前的勾子。next:继续执行后续逻辑 |
已到期 | 整型 | F | 请求过期时限。单位秒,至少30 |
jsonpField | 细绳 | F | jsonp处理器名。默认为ypjsonp |
rsaPublicKey | 细绳 | F | 加密公钥。如非异常情况则无需设置 |
主机 | 细绳 | F | 验证服务器地址。如非异常情况则无需设置 |
winWidth | 数字/字符串 | F | 窗口宽度。宽度最小230px:两种方式:1。纯数字格式,单位px。默认500; 2.百分比格式,例如80%,表示相对当前浏览器可视区域宽度的百分比。不小于230px |
郎 | 细绳 | F | 支持语言,默认简体中文。zh-cn(简体中文),en(英文) |
langPack | 目的 | F | 外部引入所需设置语言文案。需按指定格式设置对象引入,当外部引入语言包时,lang设置会自动替换 |
winWidth窗口宽度配置
lang配置(任选)
系统支持的中文,如需要替换其他语言请进行如下配置。总体支持的语言有:简体中文,英文。
如果需要设置文案的语言,可通过外部文件,按指定格式设置文案内容,然后在options配置项中通过langPack预期语言对象(对象)即可。
演示版
接入成功样例
前端接收完成后,通过谷歌浏览器的网络查看请求记录,验证请求会返回两个参数:authenticate和token。
初步纳入
接口名称
二次验证接口
接口地址
https://captcha.yunpian.com/v1/api/authenticate
请求
- 请求方式:POST
- 请求类型:application / x-www-form-urlencoded
请求参数
参数 | 类型 | 必填 | 备注 |
---|---|---|---|
验证码 | 细绳 | ÿ | 验证应用ID,对应用户后台分配的APPID |
代币 | 细绳 | ÿ | 前端从verfiy接口获取的令牌,令牌为一次验证的标志。 |
认证 | 细绳 | ÿ | 前端从verfiy接口验证通过后,返回的参数 |
secretId | 细绳 | ÿ | 验证应用密钥id |
版本 | 细绳 | ÿ | 版本,固定值1.0 |
用户 | 细绳 | F | 可选值,接收方用户标志,如担心信息过多,可采用摘要方式替换。 |
时间戳记 | 细绳 | ÿ | 当前最高的千年值,如1541064141441 |
随机数 | 细绳 | ÿ | 随机正整数,在1-99999之间,与timestamp配合可以防止消息重新 |
签名 | 细绳 | ÿ | 签名信息,见签名计算方法 |
支持的语言及请求示例
Java请求示例
C#请求示例
PHP的请求示例
Python要求范例
补充说明:
1,签名计算方法
- 第一步:对所有请求参数(不包括签名参数),按照参数名ASCII码表升序顺序进行排序。如:foo = 1,bar = 2,foo_bar = 3,baz = 4排序后的顺序是bar = 2 ,baz = 4,foo = 1,foo_bar = 3。
- 第二步:将排序好的参数名称和参数值构造成字符串,格式为:key1 + value1 + key2 + value2 ...。根据上面的示例得到的构造结果为:bar2baz4foo1foo_bar3。
- 第三步:选择与secretId配对的secretKey,加到上一步构造好的参数字符串之后,如secretKey = e3da918313c14ea8b25db31f01263f80,则最后的参数字符串为bar2barz4foo1foo_bar3e3da918313c14ea8b25db31f01263f80。
- 第四步:把3步骤拼装好的串联采用utf-8编码,使用MD5算法对串行进行摘要,计算得到签名参数值,将其加入接口的参数中即可。MD5是128位长度的摘要算法,用16位二进制表示,一个十六进制的字符能表示4个位,所以签名后的长度长度固定为32位十六进制字符。上述签名的结果为:59db908f26fb997c30b32ddb911485c2。
2,响应码释义
前端相关响应码
验证接口响应码释义
响应码 | 错误信息 | 具体描述 |
---|---|---|
0 | 好的 | 验证通过 |
1个 | 错误的请求 | 验证请求数据缺失或格式有误 |
2个 | 验证失败 | 验证不通过 |
400 | param_invalid | 请求参数错误,检查ik参数 |
400 | captcha_id_invalid | APPID不存在 |
429 | 太多要求 | 请求过于重复,请稍后再试 |
500 | 服务器错误 | 服务异常 |
获取界面响应码释义
响应码 | 错误信息 | 具体描述 |
---|---|---|
0 | 好的 | 获取验证图片成功 |
400 | param_invalid | 请求参数错误,检查ik参数 |
403 | 禁止的请求 | 异常请求,已拦截,需要中断才允许恢复访问,可能是访问过多重复导致 |
400 | captcha_id_invalid | APPID不存在 |
429 | 太多要求 | 请求过于重复,请稍后再试 |
500 | 服务器错误 | 服务异常 |
初步相关响应码
响应参数
参数 | 类型 | 必填 | 备注 |
---|---|---|---|
代码 | 整型 | ÿ | 成功为0,非0为异常信息,详见下方“二次验证接口响应码释义” |
味精 | 细绳 | ÿ | 错误描述信息 |
二次验证接口响应码释义
响应码 | 错误信息 | 具体描述 |
---|---|---|
0 | 好的 | 二次验证通过 |
400 | validate_fail | 二次验证不通过 |
400 | signature_invalid | 签名验证失败 |
400 | param_invalid | 请求参数错误,检查ik参数 |
400 | captcha_id_invalid | APPID不存在 |
429 | 太多要求 | 请求过于重复,请稍后再试 |
500 | 服务器错误 | 服务异常 |
详情点击云片官网:云片官网
标签:细绳,请求,验证,兼顾,接口,响应,参数,安全性 来源: https://blog.csdn.net/wh761076/article/details/116228775