更新记录

1.0.0(2026-10-14)

1.0.0 企业首发版:支持Android与iOS双端Root/越狱深度检测、系统代理识别、模拟器多开拦截与接口HMAC-SHA256防重放动态签名。


平台兼容性

uni-app(3.8.5)

Vue2 Vue3 Chrome Safari app-vue app-nvue Android iOS 鸿蒙
√ √ - - √ √ √ √ √
微信小程序 支付宝小程序 抖音小程序 百度小程序 快手小程序 京东小程序 鸿蒙元服务 QQ小程序 飞书小程序 小红书小程序 快应用-华为 快应用-联盟
- - - - - - - - - - - -

App安全检测与接口动态签名防刷加密 UTS 插件 (fant-security-guard)

插件简介

fant-security-guard 是一款专为 uni-app / uni-app x 打造的企业级客户端安全风控与防刷签名 UTS 原生插件。 无需引入笨重的第三方商业 SDK,基于 Android / iOS 底层系统原生 API 高效运行,毫秒级感知运行环境风险,为金融、电商、外卖、政企及有严格风控要求的移动端应用提供坚不可摧的安全护航。


核心功能特性

  1. Root / 越狱深度探测:
    • Android:多路径扫描 su 二进制特征、系统构建 test-keys 属性检测、Magisk / KernelSU / Xposed 框架隐蔽特征目录扫描。
    • iOS:扫描 Cydia、Sileo、MobileSubstrate 核心特征库,沙盒逃逸写入校验与系统私有协议探测。
  2. 防抓包与中间人代理监控:
    • 精准识别系统级 HTTP / HTTPS 代理服务器挂载(有效防御 Charles、Fiddler、Mitmproxy 等抓包篡改)。
  3. 模拟器与外挂群控拦截:
    • 识别主流安卓模拟器(雷电、夜神、MuMu、逍遥等)底层硬件驱动与 QEMU 管道特征,杜绝黑产多开刷单。
  4. 动态接口防刷与防重放签名 (HMAC-SHA256):
    • 自动提取业务请求参数按 ASCII 字典升序拼接,注入动态毫秒级时间戳与 32 位随机 Nonce。
    • 生成具备强防篡改能力的安全摘要,可直接挂载到请求头 X-Sign,服务端几行代码即可校验拦截重放攻击。
  5. 极简零配置:
    • 遵循 uni_modules 规范,一键导入即可使用,支持 Vue2 / Vue3 / uni-app x 全平台项目。

快速上手与集成使用

1. 导入插件

在 HBuilderX 中将本插件导入至项目的 uni_modules/fant-security-guard 目录下。

2. 代码示例

<template>
  <view class="container">
    <button type="primary" @click="handleSecurityCheck">一键检测设备环境安全</button>
    <button type="default" @click="handleSignRequest">发起安全防刷签名请求</button>

    <view v-if="checkResult" class="result-box">
      <text>环境风险状态:{{ checkResult.isRisky ? '存在高危风险' : '安全通过' }}</text>
      <text>是否Root/越狱:{{ checkResult.isRootOrJailbreak }}</text>
      <text>是否处于代理抓包:{{ checkResult.isProxyEnabled }}</text>
      <text>是否运行于模拟器:{{ checkResult.isEmulator }}</text>
    </view>
  </view>
</template>

<script>
import { checkSecurityEnvironment, generateApiSignature } from '@/uni_modules/fant-security-guard';

export default {
  data() {
    return {
      checkResult: null
    };
  },
  methods: {
    // 1. 全方位环境安全体检
    handleSecurityCheck() {
      const result = checkSecurityEnvironment();
      this.checkResult = result;

      if (result.isRisky) {
        uni.showModal({
          title: '安全警告',
          content: '检测到当前运行环境存在风险:\n' + result.riskMessages.join('\n'),
          showCancel: false
        });
      } else {
        uni.showToast({ title: '设备环境安全检测通过', icon: 'success' });
      }
    },

    // 2. 接口调用前生成防刷防篡改签名
    handleSignRequest() {
      const orderParams = {
        userId: "10086",
        productId: "vip_year",
        amount: "199.00"
      };

      // 生成防篡改签名与请求头
      const signInfo = generateApiSignature({
        params: orderParams,
        secretKey: "YOUR_APP_CLIENT_SECRET_KEY" // 客户端与服务端约定的通信秘钥
      });

      console.log("计算签名结果:", signInfo.sign);
      console.log("准备追加的安全请求头:", signInfo.headers);

      // 发起请求时直接挂载安全头
      uni.request({
        url: 'https://api.yourdomain.com/v1/order/create',
        method: 'POST',
        data: orderParams,
        header: {
          'Content-Type': 'application/json',
          ...signInfo.headers // 自动包含 X-Sign, X-Timestamp, X-Nonce
        },
        success: (res) => {
          console.log('安全请求成功:', res.data);
        }
      });
    }
  }
};
</script>

API 参考

checkSecurityEnvironment(): SecurityCheckResult

返回当前设备综合安全状态检测结果。

返回值字段定义:

字段名 类型 说明
isRisky boolean 是否存在综合风险(命中任一高危项即为 true)
isRootOrJailbreak boolean 是否处于 Root (Android) 或 越狱 (iOS) 状态
isProxyEnabled boolean 系统是否挂载了 HTTP/HTTPS 代理(抓包检测)
isEmulator boolean 是否运行于虚拟机/安卓模拟器
isVpnActive boolean 是否处于 VPN 通道连接状态
isDebugAttached boolean 是否处于调试分析状态
riskMessages string[] 命中风险的详细文案列表

generateApiSignature(options: SignOptions): SignResult

生成防重放、防篡改的标准动态签名。

入参配置 (SignOptions):

参数名 类型 必填 说明
params object 是 业务请求参数对象
secretKey string 是 双方约定的通信密钥
timestamp number 否 毫秒时间戳(默认当前系统时间)
nonce string 否 32位随机字符串(默认自动生成)

服务端验签流程指引(Node.js / Python / Java / PHP 通用)

  1. 服务端从 Header 获取 X-Sign, X-Timestamp, X-Nonce;
  2. 防重放校验:检查当前时间戳与 X-Timestamp 的差值(建议绝对值不超过 60 秒),若超时直接拦截;
  3. Nonce 幂等校验:将 X-Nonce 存入 Redis 缓存(设置 60 秒过期),若发现已存在则为重放攻击;
  4. 签名算法复现:按同样规则对入参 key 做 ASCII 升序排序,拼接 nonce, timestamp, secretKey,计算 HMAC-SHA256 摘要,与 X-Sign 比对一致即可放行。

常见问题与支持

  • 是否需要申请敏感隐私权限?:不需要申请任何个人敏感信息或通讯录权限,上架主流应用商店(如华为、小米、苹果 App Store)合规无忧。
  • 是否支持 uni-app x?:原生 UTS 编写,完整兼容 uni-app 与 uni-app x。

隐私、权限声明

1. 本插件需要申请的系统权限列表:

无

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

本插件不采集任何数据

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

无

暂无用户评论。