前端js是解释型语言,用户可以直接获取到源码,容易作弊,比如直接修改血量(无限血量、永远不死)、直接刷接口(发奖)。针对这种现状,可以通过以下手段一定程度保证不出现事故。
- 接口隐藏能力:混淆、加密等手段增加破解接口的难度
- 异常感知能力:记录疑似作弊用户行为,超过阈值报警
- 一键止损能力:被爆破后,一键停服止损
- 快速升级能力:停服后能够迅速升级加密机制
接口隐藏能力:
- 前端代码混淆,让用户无法直接轻易读懂源码
接口内容加密:
- request_path/request_body/response_body都采用aes256加密
对称密钥隐藏&更新:
- 初始密钥:首页加载时,请求服务端某个图片地址http://a.com/head.jgp,服务端把密钥追加在图片末尾
- 后续密钥通过每个response更新, 本次request密钥来源于上次请求的reponse
- 迷惑性response: 不给前端返回任何错误信息,有可疑行为均记录服务端日志, 增加接口参数调试的迷惑性
- 杂音参数:每次请求可以添加n个无用的杂音参数,增加接口调试难度
异常感知能力:
记录用户可以行为
- 解密失败
- 奖励数据超过配置阈值
- 阶段数据之和与总数不符合
- 定时扫描可以行为数据,绝对值、百分比,超过阈值则发送报警通知
一键止损能力:被爆破后,可以迅速拉黑用户、更换低价值配置数据、一键停服
快速升级能力:
- 停服后能够迅速升级加密机制,提前准备多套加密机制,发现问题后前端及时发版。
- 甚至可以,前端定期发版,更新加密机制,使现行的作弊手段失效