HarmonyOS 设备状态检测:你的APP检测到你设备的“身份证“了吗
什么是设备状态检测
你有没有想过,怎么知道一台设备是不是被 root 过?怎么知道设备有没有被篡改?这就是设备状态检测要解决的问题。
设备状态检测(DeviceVerify)是 Device Security Kit 的一部分,它给每台设备发一个"身份证"——DeviceToken。这个 Token 包含了设备的安全状态信息,可以用来判断设备是否安全。
简单说,DeviceToken 就是设备的"身份证",它告诉服务器:这台设备是安全的,没有被篡改过。
核心功能
设备状态检测的核心功能就是获取 DeviceToken:
- 获取 DeviceToken:向 DeviceVerify 服务器请求设备的"身份证"
- 验证设备状态:服务器可以用 DeviceToken 来判断设备是否安全
环境搭建
硬件要求
- 设备类型:Phone、PC/2in1、Tablet、TV、Wearable
- HarmonyOS 系统:HarmonyOS NEXT Developer Beta1 及以上
软件要求
- DevEco Studio 版本:DevEco Studio NEXT Developer Beta1 及以上
- HarmonyOS SDK 版本:HarmonyOS NEXT Developer Beta1 SDK 及以上
搭建步骤
- 安装 DevEco Studio:去华为开发者官网下载安装
- 配置开发环境:确保网络环境正常
- 设备调试:使用真机进行调试
项目结构
├── entry/src/main/ets
│ ├── entryability
│ │ └── EntryAbility.ets // 程序入口类
│ ├── model
│ │ └── DevCertManagerModel.ts // DeviceToken 获取类
│ └── pages
│ └── Index.ets // 主页面
项目结构很简单,核心逻辑在 DevCertManagerModel.ts 里。
第一步:导入模块
import { deviceCertificate } from '@kit.DeviceSecurityKit';
import { BusinessError } from '@kit.BasicServicesKit';
导入两个模块:
deviceCertificate:设备证书接口,用来获取 DeviceTokenBusinessError:错误处理
第二步:获取 DeviceToken
获取 DeviceToken 非常简单,只需要一行代码:
try {
deviceCertificate.getDeviceToken().then((token) => {
console.info('Succeeded in executing getDeviceToken');
this.displayText = token;
}).catch((err: BusinessError) => {
console.error('getDeviceToken failed! %{public}d %{public}s', err.code, err.message);
});
} catch (err) {
let error: BusinessError = err as BusinessError;
console.error('getDeviceToken failed! %{public}d %{public}s', error.code, error.message);
}
调用 deviceCertificate.getDeviceToken() 就能获取 DeviceToken。这个 Token 是一个字符串,包含了设备的安全状态信息。
第三步:处理 DeviceToken
获取到 DeviceToken 后,你可以把它发送给你的服务器。
async function sendTokenToServer(token: string) {
try {
let response = await fetch('https://your-server.com/api/verify-device', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({ deviceToken: token })
});
let result = await response.json();
if (result.isSecure) {
// 设备安全,继续业务逻辑
} else {
// 设备不安全,提示用户
}
} catch (error) {
// 处理错误
}
}
把 DeviceToken 发送给你的服务器,服务器可以用华为的云测 REST API 来验证设备状态。
DeviceToken 有什么用
DeviceToken 包含了设备的安全状态信息,可以用来:
检测设备是否被 root
// 服务器验证 DeviceToken
async function checkDeviceSecurity(token: string) {
// 调用华为云测 REST API 验证
let result = await verifyDeviceToken(token);
if (result.isRooted) {
// 设备被 root 过,可能存在安全风险
return false;
}
return true;
}
检测设备是否被篡改
// 检查设备系统是否被篡改
async function checkDeviceIntegrity(token: string) {
let result = await verifyDeviceToken(token);
if (result.isTampered) {
// 设备系统被篡改过
return false;
}
return true;
}
设备标记管理
获取到 DeviceToken 后,你还可以通过云测 REST API 进行设备标记管理:
- 查询设备标记状态:查看设备是否被标记
- 更新设备标记状态:更新设备的标记
- 删除设备标记状态:删除设备的标记
实际应用场景
设备状态检测在实际开发中有很多用途:
金融应用安全检测
// 用户登录前,检查设备是否安全
async function loginWithDeviceCheck(username: string, password: string) {
let token = await deviceCertificate.getDeviceToken();
let isSecure = await checkDeviceSecurity(token);
if (!isSecure) {
// 设备不安全,提示用户
showWarning('您的设备存在安全风险,请更换设备登录');
return;
}
// 设备安全,继续登录
await login(username, password);
}
游戏防作弊
// 游戏启动前,检查设备是否被修改
async function startGameWithDeviceCheck() {
let token = await deviceCertificate.getDeviceToken();
let isTampered = await checkDeviceIntegrity(token);
if (isTampered) {
// 设备被修改过,可能存在作弊风险
showError('检测到设备异常,无法启动游戏');
return;
}
// 设备正常,启动游戏
await startGame();
}
企业应用合规检查
// 企业应用启动前,检查设备是否符合企业安全策略
async function checkEnterpriseCompliance() {
let token = await deviceCertificate.getDeviceToken();
let result = await verifyDeviceToken(token);
if (result.isRooted || result.isTampered) {
// 设备不符合企业安全策略
showError('您的设备不符合企业安全策略,请联系 IT 部门');
return;
}
// 设备符合要求,继续使用
await startApp();
}
适用场景
设备状态检测适合以下场景:
- 金融应用:检测设备安全,防止欺诈
- 游戏应用:检测设备是否被修改,防止作弊
- 企业应用:检测设备是否符合企业安全策略
- 支付应用:检测设备安全,保护交易安全
- 政务应用:检测设备安全,确保数据安全
注意事项
- 网络要求:获取 DeviceToken 需要联网
- 设备支持:大部分 HarmonyOS 设备都支持
- Token 有效期:DeviceToken 有有效期,需要定期获取
- 服务器验证:DeviceToken 需要在服务器端验证
- 隐私合规:使用设备检测功能要遵守隐私法规
核心流程图
设备状态检测的完整流程:
DeviceToken 的应用场景:
总结
设备状态检测给你的设备发一张"身份证",核心流程:
- 调用
deviceCertificate.getDeviceToken()获取 DeviceToken - 把 DeviceToken 发送给你的服务器
- 服务器用华为云测 REST API 验证设备状态
- 根据验证结果决定是否允许业务操作
掌握了这些,你就能让你的应用检测设备安全状态,提升应用的安全性。
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐
所有评论(0)