产品技术总览

产品概述

服务模式

极验是一家提供SaaS服务的网络安全公司。

产品体验

极验始终注重系统安全和用户体验的平衡性,在用户轻点验证的瞬间,极验后台即可处理200多种单维度的策略检查。
如判断是正常用户,0.4秒即可通过验证,提升用户验证体验。

服务功能

使用极验软件服务,除了有私有化部署的特殊需求,其它从部署到正式使用,数据查看、选项操作,包括功能管理功能的购买扩展,均可在线上进行。同时极验保障服务的稳定性和可续性。可以避免企业在购买、构建和维护基础设施的一系列不必要的消费。

同时采用更加严格的技术措施,保证每家企业数据的安全性和保密性。

安全性

3.0验证安全系统防御组合策略,能根据网站面临的风险特征灵活调控应对措施。在网络传输层面上,极验默认采用HTTPS安全协议保证数据的安全,进一步保证了每家企业数据的安全性和保密性。同时极验应用云架构,面对突发的性能需求或服务节点故障,也可以提供了不间断业务的快速扩容能力以及冗余方案。

除此之外,我们还有专门的安全专家团队,和数据分析团队,为您时刻提供安全保驾护航。

集成流程

以下为3.0验证安全系统服务的集成流程,整个集成流程是顺序进行的,在下一个步骤开始前请确保上一个步骤的检查点都已经正确完成。

productflow

step1. 注册极验账号

访问验证管理后台,按照步骤注册极验账号,然后登陆到验证管理后台。进入后台之后,选择新增验证来增加一个场景的验证码配置项,极验会为该配置项分配一个唯一的IDKEY。进入验证码配置项的管理界面,可以对验证码相关的各项属性进行配置或自定义,在验证集成阶段配置项大部分可以选择默认即可。

检查点:

  • 获取一组ID和KEY,例如:
ID(07df3141a35**********19a473d7c50),
KEY(543b19036ef********8e07d121b81e9)

step2. 集成服务端SDK

服务端SDK的主要目的是为客户端提供两个接口:API1(验证初始化)、API2(二次验证,判断验证结果的真实性)。服务端SDK的具体集成细节和demo请参考服务端部署

检查点:

  • API1和API2可以正常访问,API2目前只要能返回fail即可,替换以下的url为网站主为API1和API2分配的url,API2的参数暂时不需要替换,如果API2访问时读取session的语句报错,可以暂时把session语句注释掉。检查方式:
API1:
request: curl -c /tmp/cookie 'http://www.geetest.com/demo/gt/register-slide'
response:
{
"success": 1,
"challenge": "916e3a63fd4029a600fe5be03d6aa9aa",
"gt": "e52c06c937981b90b275d0aff1d40076",
"new_captcha": true
}
API2
request: curl -b /tmp/cookie -d 'geetest_challenge=1a76d9da01e21b0178824dbed1425ecaiy&geetest_validate=727f1edd0455aeff265f9903d7ac097a&geetest_seccode=727f1edd0455aeff265f9903d7ac097a|jordan' 'http://www.geetest.com/demo/gt/validate-slide'
response:
{
"status":"fail",
"info":"登录失败"
}

step3. 集成客户端SDK

客户端SDK支持WebiOSAndroid三大平台,是验证码的UI交互核心,会涉及到网站主的两个API请求以及与极验云服务的几个API请求。客户端SDK的具体集成细节和demo请参考客户端部署

检查点:

  • 成功访问API1,获取到返回的challenge参数,完成初始化
  • 验证码正常弹出
  • 验证码可以正常操作,出现验证成功界面
  • 成功获取到发起API2请求的三个参数:geetest_challenge,geetest_validate,geetest_seccode
  • 成功发起API2请求,抓包或者浏览器控制台可以看到请求已正确发出

step4. API2调试

在步骤2中已经检查了API2是否可以正常访问,本步骤是为了检查API2逻辑是否正确,即是否能够正确判断验证有没有通过。

检查点:

  • 服务端成功收到客户端发出的API2请求,且获取到geetest_challenge,geetest_validate,geetest_seccode三个参数
  • 服务端调用SDK中的方法后,构造出与客户端约定好的数据返回,可以正确表示出验证是否成功
  • 客户端成功收到API2的返回结果,根据返回结果执行业务逻辑

step5. 宕机模式模拟

宕机模式,即failback是为了处理极端情况下,网站主服务器连接不上极验云服务器时的一种应急处理模式,保障用户操作不受影响。极验云服务器的可用状态(gt_server_status)在API1中通过session存储,并且通过success字段返回给客户端,客户端根据success字段判定是否走failback的验证判断逻辑,API2中会从session取出gt_server_status,根据该状态,API2确定是在本地还是极验云服务器获取二次验证结果。

模拟宕机模式:API1的返回结果中success字段强制设置为0,session中保存的gt_server_status设置为API2中会判断为宕机模式的值(如Java SDK中可设置为0)

检查点:

  • 宕机模式下验证流程正常

名词解释

以下为极验产品中出现频繁的技术名词。

id

验证公钥。32位字符串, 验证码的唯一标识, 对公众可见, 用以区分不同页面的验证模块。

2017年03月27日后在验证管理后台生成的ID均为3.0属性,生成之后会有明显的标识区分2.0。其中极验3.0的ID必须同3.0版本的SDK搭配使用(此文档中提供的SDK均针对3.0版本撰写),否则在请求我们接口时会返回错误。如果坚持使用极验2.0的ID,请联系您的商务。

key

验证私钥。32位字符串, 与验证码公钥的唯一对应, 在后台云验证需要此私钥来进行数据加密, 保障验证安全。请网站主妥善保管注册的私钥。

challenge

验证事件流水号, 唯一标识一次验证事件。用于保证单次验证事件的唯一性, 防止重放。此流水号通过部署的SDK从极验的服务器上动态注册获得获得, 且每条的有效时间约为10分钟, 否则无法使用。

forbidden

验证提交后返回的结果之一, 此类结果说明提交的验证数据无法通过极验安全云的计算判定。

user_id

用于提供进阶数据分析服务。该参数通过后端SDK向极验提供, 如担心用户信息风险, 可以先将user_id预处理(如哈希处理)后再提供。

failback

极验致力于通过各种技术手段保证服务稳定,在难以避免或不可抗拒的情况下,极验通过提供failback机制保证服务宕机情况下的正常运作。

网站主的服务端通过心跳检测,来判断极验服务是否宕机。进入failback模式表示极验服务暂时不可用, 提供只需通过网站主客户端和服务端完成的验证服务。见failback 流程

只要配套集成极验验证的前端和后端, 在极验服务宕机时, failback模式是默认模式。

API1

API1用于验证开始时获取challenge,并在网站主服务器端利用key对challenge进行加密,防止第三方绕过客户服务端获取challenge;同时,API1会检查极验云服务器是否能正常连接,将可用状态返回给客户端,并且缓存在session中。

API2

API2用于验证完成后,向极验云服务发起二次验证,确保该次验证结果不是伪造的,并且保证本次验证使用的challenge只能被二次验证一次。如果API1存储的极验云服务器为不可用状态,API2中的二次验证也会在网站主服务器本地进行。

fullpage

fullpage阶段即一点即过阶段,可以认为是验证的预判定阶段,用户点击按钮后,会上传用户的轨迹和一些环境信息等到极验云服务器,极验云服务器判定当前验证的安全等级,从而决定是下发进一步的验证形式还是给出通过、不通过的验证结论。

二次验证

客户操作完验证码,并且极验云服务器完成验证判定后,客户端需要向网站主服务器发送API2请求,API2背后会向极验云服务器查询本次验证的结果,并且将本次验证的challenge设置为失效状态,避免challenge被二次使用。这个请求过程即为二次验证过程,目的是确保验证结果是真实的从极验云服务器获取的,避免结果被篡改。

产品结构

极验产品的软件构成主要为验证管理后台, 服务端, 客户端

验证管理后台

极验的验证码管理后台。可以自助申请注册多个验证id, 并对其进行管理。其中管理可以精细到对单个验证码id的吊销, 样式切换, 风控调整, 续费和版本升级。

服务端

服务端作为极验提供的saas服务一部分, 封装了验证服务端的部分所需要配置的接口,完成必要的数据处理。极大地降低用户使用我们验证服务的门槛,方便开发人员根据自己网站的需求更好地使用验证。极验提供了c#,java,python,node.js,php等开发语言的sdk。

客户端

客户端作为极验提供的saas服务的一部分, 封装了极验验证客户端部分, 呈现了验证码的主要交互界面。平台覆盖全面, sdk接口简单易用,集成更加灵活。

web支持chrome,firefox,ie6+,safari等桌面浏览器, 移动平台支持iOSAndroid等内嵌浏览器。提供iOS,Android的原生开发sdk, 接口更简洁, 集成更轻松。

通讯流程

通过完整流程和failback流程说明

完整流程

geetest netwoking sequence

failback流程

geetest_failback_networking

交互流程

以高风险用户为例

interactive 3

FAQ

API1、API2怎么配置

API1API2是网站主集成极验服务端SDK后需要提供给客户端的两个API,分别完成验证初始化和二次验证的功能,可以参考服务端SDK中的demo进行开发。

failback发生的场景及用途,怎么本地测试宕机

failback用于应对客户服务器与极验云服务失去连接的情况下保障验证能顺利完成,既不影响用户体验,也能够进行基础的本地规则验证,这种情况发生的概率非常低,failback策略是一种极端情况下的保障策略。集成阶段可以模拟failback模式,模拟方法参考上文Step5中的宕机模式模拟。

验证具体有哪些表现形式

极验3.0提供了多种验证展现形式,详细可参考: