一、前言
此系列将写一个系列给大家介绍腾讯云上的业务安全产品,希望加深大家对于腾讯业务安全产品的了解和熟悉,使用。
随着互联网业务的发展,各行各业都涉及业务安全问题:
- 金融中涉及的主要业务安全问题包括账号安全、资金安全、洗钱、骗贷、老赖逾期问题、金融黑中介、薅羊毛等;
- 社交中面临的主要业务安全问题包括账号安全(盗号、恶意注册、养号)、诈骗、恶意引流、色情恐怖政治等;
- 游戏中则是外挂、盗号、内容类(诈骗引流低俗辱骂色情恐怖)、工作室打金等。
业务安全是一个不断对抗的过程,腾讯业务安全是基于腾讯20年黑灰产的对抗经验和领先技术打造而成的标准化风控模型,目前已在金融、电商、政务等多个行业落地应用,并覆盖金融领域超过80%的标杆客户。
腾讯云验证码(Captcha)基于十道安全栅栏, 为网页、App、小程序开发者打造立体、全面的人机验证,最大程度地保护注册登录、活动秒杀、点赞发帖、数据保护等各大场景下的业务安全,同时提供更精细化的用户体验。
智能分级
经腾讯10亿用户的安全大数据训练后,腾讯云开发了智能分级模型,能根据用户多维环境因素,精确区分可信、可疑和恶意用户,弹出不同的验证方式。结合智能分级模型,腾讯云验证码验证策略为:可信用户免验证、可疑用户弹出滑块验证、恶意用户弹出 VTT 动态语义验证。
腾讯云目前提供两种最新型的交互式验证码:滑块验证码和 VTT 动态语义验证码,业务方可根据需求选择接入。
- 滑块验证码交互简单,抗破解性强,用户轻轻一滑即可快速完成验证。
- 相对于滑块类型,动态语义验证码难度更高,具有更强的人机对抗能力。
防御体系
腾讯云验证码构筑十道安全栅栏,层层阻拦黑产破解,安全性远超传统的单点防御。
- VTT 语义验证:针对机器学习打码的黑产新手法,独创第四代动态语义验证(VTT),图片 语义 逻辑完美应对新挑战。
- 动态加密:保障前端 SDK 的安全性,避免被黑产逆向。
- 轨迹分析:通过设备指纹、黑名单库、Pow 认证、虚拟机、反虚拟机等进行分析。
- 特征发现:通过大数据以及机器学习,根据用户操作行为、浏览器环境等因素进行人机识别。
- 信用历史:智能标注恶意验证,每一条验证结果都会附带验证过程中发现的恶意痕迹,可用来二次打击。
- Pow 认证:引入区块链技术,对可疑验证要求工作量证明,防止批量攻击。
- 黑名单库:对大量发起恶意请求的设备/IP标注黑名单,发起更严格的验证。
- 虚拟机:前端构建的x86虚拟机环境,能有效阻拦恶意逆向破解前端代码。
- 反模拟器:识别主流的浏览器模拟器,防止通过模拟器绕过前端代码策略。
- 设备指纹:精确识别验证设备,构建验证行为画像,区分可信和恶意设备。
自由配置
控制台对提供验证数据查看和验证码配置功能。通过验证码数据看板,可以查看历史验证情况、拦截情况、验证体验等数据,数据实时更新。通过配置中心可以调整验证码安全、外观、告警相关配置。无流量包套餐门槛,服务全线开通,配置畅通无阻。
二、验证码产品特性
应用场景
- 注册登录
- 活动秒杀
- 点赞发帖
- 数据保护
三、验证码产品优势
- 智能分级免验证
依托精准的算法模型,智能切换验证 码形式,让安全用户告别复杂繁琐的 验证流程,兼顾安全与用户体验
- 模型精准可靠
经10亿大数据训练并真实使用,保障 算法模型的准确性
- 服务稳定高可用
国内最大验证码调用量,QQ、微信都 在使用,QPS可达10-20w
- 服务高速响应
云服务冗余切换机制,人工即时响应 服务,超出预算自动切换基础验证机 制,保证业务的持续运营
- 保障服务安全
采用动态加密、数据加密技术,保障 整个服务的安全性
四、使用常见问题和案例
1.验证码接入(谢欢新版本指引)
1)购买新版本验证码 控制台:https://console.cloud.tencent.com/captcha 计费相关:https://buy.cloud.tencent.com/captcha#captcha 2)接入API文档 验证码文档:https://cloud.tencent.com/document/product/1110/36926 接入方式:
- 在控制台注册新应用后,会分配APPID和App Secret Key ,这个是验证码sdk的参数之一,APPID在前端使用,App Secret Key 给后端DescribeCaptchaResult接口使用
- 前端直接接入验证码sdk,拉起验证码。如果滑动成功,弹框会消失。同时会输出ticket和 randstr作为DescribeCaptchaResult接口的参数,如果该接口返回OK,就能进一步确认 用户滑动验证码成功,流程就走完了
- 如果是子账号要使用,需要主账号给权限QcloudCaptchaFullAccess https://console.cloud.tencent.com/cam/policy
2、验证码测试指引
1) 获取测试Demo
链接: https://share.weiyun.com/5DWD8yh (密码:UGMq) 前端源码data-appid = “系统分配的APPID(控制台基础配置界面)
2) 验证测试
根据自己的实际使用前端获取到:Ticket、randstr字段信息;(需要验证码确认ok)
获取的字段Ticket、Randstr访问后端: https://cloud.tencent.com/document/api/1110/36926
填入相对应字段信息,注意字段按照下面图标记填写即可
最终调用结果:
{ "Response": { "CaptchaCode": 1, "CaptchaMsg": "OK", "EvilLevel": 0, "RequestId": "c0aca01d-f6d4-4ab1-b458-d5f34f28d5e0" }, "retcode": 0, "retmsg": "ok" }
附则: 1. 用户在界面滑动验证码成功成功(用户确认) 2. 再调用接口返回ok(这个是确认步骤) 3. 两步都完成了才说明验证码是真正的成功了,就好比注册账号时需要输入两次 密码,一次输入密码、一次确认密码。
3.返回参数code报错解释
返回参数code:10001/未开通权限 解释
{ "Response":{ "RequestID":"b3ddf32a-0sds-1asd-25ds-a55dsddsaf", "Businesscode": 0, "Error":{ "code":"UnauthorizedOpertion.Unauthorized", "Message":"未开通权限" } } "retcode":10001, "retmsg":"未开通权限" } 两种情况:未购买验证码/验证码服务已经过期 注释:https://console.cloud.tencent.com/captcha 控制台上购买、领取试用即可
返回参数code:16解释
{ "Response": { "CaptchaCode": 16, "CaptchaMsg": "appid no match", "EvilLevel": 0, "RequestId": "b6eb7c6d-0307-4cdf-a5b3-6d12a6fad889" }, "retcode": 0, "retmsg": "ok" }
前端data-appid = “系统分配的APPID(在控制台基础配置界面)”
返回参数code:4300解释
{"code":4300,"codeDesc":"RequestLimitExceeded","message":"未开通服务权限:[nonce:23406][0095-0001-0023]"}
老版本验证码的报错,如果需要接入使用新版本的验证码(参照文档内:验证码接入)
返回参数code:8解释
{ "Response": { "CaptchaCode": 8, "CaptchaMsg": "verify timeout", "EvilLevel": 0, "RequestId": "d75dbea2-47e8-4a74-b216-3fdb97e5d987" }, "retcode": 0, "retmsg": "ok" }
返回参数code:15解释
{ "Response": { "CaptchaCode": 15, "CaptchaMsg": "decrypt fail", "EvilLevel": 0, "RequestId": "8c24e853-6c11-4aa5-8d1f-6418ddcae2bb" }, "retcode": 0, "retmsg": "ok" }
CaptchaType必须为9
Randstr必须跟前端返回一致
ticket票据必须与前端返回保持一致
secretid、secrekey必须一致,不能填错或者出现空格 userip不合法也会出现上述问题
返回参数code:9解释
{ "Response": { "CaptchaCode": 9, "CaptchaMsg": "Sequnce repeat", "EvilLevel": 0, "RequestId": "e6f385c3-eff7-493e-b00c-1c7ab0f3e1ac" }, "retcode": 0, "retmsg": "ok" } Ticket票据重复试使用 注意:这里的票据验证,不保证严格防重放。 目前最多可以验证6次,但这个数字以后可能变动,属于正常现象,并不是连续性
返回参数code:100解释
{ "Response": { "CaptchaCode": 100, "CaptchaMsg": "SecretKeyCheck Error", "EvilLevel": 0, "RequestId": "053715c3-7be5-41c6-b3fc-37ad0a9aee06" }, "retcode": 0, "retmsg": "ok" }
控制台captchaappid、App Secret Key不一致
返回参数code:7解释
{ "Response": { "CaptchaCode": 7, "CaptchaMsg": "captcha no match", "EvilLevel": 0, "RequestId": "57cae6b2-e567-43f5-b1bb-606864fefe24" }, "retcode": 0, "retmsg": "ok" }
Randstr重用;Ticket为新生成 Ticket重用 也是同理
返回参数code:104解释
{ "Response": { "CaptchaCode": 104, "CaptchaMsg": "Ticket Reuse", "EvilLevel": 0, "RequestId": "5d32ba03-88c9-4601-aed6-06db04eac7d5" }, "retcode": 0, "retmsg": "ok" } ticket票据重用
4.验证码相关问题
验证码是怎么收费的
验证码的计费是按套餐使用,超出套餐按0.005元/次日结(不能直接申请日结) 请求量:前端请求验证码接口的量 验证量:前端进行验证的量,滑动一次 1 通过量:最终票据校验验证通过的量 计费量:进行票据校验的量,既前端验证通过,进行后端票据校验的量。
Ticket有效时长
5分钟
防水墙数据导入腾讯云验证码
以下三个参数必录 1、原有防水墙的账号uin,一般是qq号 2、原有防水墙的验证码appid 3、原有防水墙的验证码key
超过1000QPS怎么处理
如果用户的实际使用情况会超过1000QPS需要联系验证码的运维同事后台为用户更改,且不收费
为什么相同的ticket,多次显示通过ok了?
票据验证,不保证严格防重放。 一个票据可以验证1-N次,都是可能的,有一个最大值。 也就是票据不能无限重放。小于最大值的都是可能的 最多可验证6次
验证码支持哪些语言,怎么配置
控制台基础配置语言栏调至自适应 web端会根据浏览器的语言自适应 手机端会根据手机语言自适应 zh-tw 中文(中国台湾) zh-cn 中文 zh-hk 中文(中国香港) en 英语 ar 阿拉伯语 fr 法语 de 德语 he 希伯来语 hi 印地文 id 印度尼西亚语 it 意大利语 ja 日语 ko 韩语 ms 马来西亚语 pl 波兰语 pt 葡萄牙语 ru 俄语 es 西班牙语 th 泰国语 tr 土耳其语 vi 越南语
验证码支持海外使用吗
目前在香港北美有部署,其他地区会慢些 验证码前端和后端请求时长 前端加载没有时间限制 后端票据核检验5s
提示“滑块半路丢了”、“验证码出了小差,再试一次吧”、“网络恍惚了一下,再试一次吧”属于被安全策略给打击(附策略打击展示图)
体验优先是只保留基础安全策略模型,安全优先是打开了所有安全策略模型;不止安全优先,体验,平衡也会出的。只是安全优先的策略模型更多更严格