# 安全指引
本文梳理了小游戏开发和运营过程中需要关注的一些安全风险,并提供相应的建议和工具,帮助开发者规避或修复游戏内的安全问题,避免对业务造成损失。
# 安全建议
- 代码保护:妥善保护好代码,包括源码和各个平台的产物,尤其是 H5 产物更容易被黑产解析或盗用;平台提供的 Secret 或者游戏生产的票据或者加密信息应妥善保管,避免明文存储在代码内;
- 调试关闭:游戏上线前关闭所有开发期间的调试能力,避免内部泄露或者非正常途径唤起调试功能;
- 权限校验:敏感接口应校验用户登录状态和权限,只保留需求范围内的最小权限,并下线所有 mock 或者调试接口;
- 代码加固:使用代码混淆,代码水印等方式降低代码被破译或被盗取的风险;
- 风控校验:对于核心的接口进行风控校验,可以从调用频率,金额大小,用户信息等维度进行校验,避免黑产接口伪造盗刷;
- 内容安全检测:所有开发者输入或上传的信息需要经过内容安全检测;
# 代码加固
代码加固是对明文游戏代码的一种保护,常见的方法有代码混淆和代码水印两种方式
# 代码混淆
混淆是代码特征工程的基础上,对代码进行功能等价、结构异型、名称重组的一种转换。转化后的代码不会改变原有的游戏逻辑,但名称上、结构上、控制流程上会发生巨大的变化。几乎丧失了可读性,可大幅的提升攻击者的理解成本。常用的工具有UglifyJS (opens new window)和Terser (opens new window)
# 代码水印
代码水印是在代码加固过程中添加的一段身份指纹信息,对代码运行逻辑不产生任何影响,无额外的性能开销,同时还具有隐蔽性和唯一性。水印信息在一定程度上证明了代码和开发者的权益关系,在判定代码归属关系时候,可以作为证据向平台寻求支持。