恒美微站 Logo 恒美微站
  • 首页
  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心
  • 联系我们

鸿蒙掌上驾考宝典应用开发42:鸿蒙应用安全——签名、权限与数据保护

  • 首页
  • 资讯中心
  • /
  • 鸿蒙掌上驾考宝典应用开发42:鸿蒙应用安全——签名、权限与数据保护

相关资讯

车牌自动识别技术全解析:从机器视觉原理到工程实战避坑指南 2026/8/19 9:20:44
基于契约的多智能体系统:IMPACT-CYCLE如何解决长视频语义记忆的监督与修正难题 2026/8/19 9:20:44
SysTools ICS Converter Tool:专业处理iCalendar文件格式转换与数据提取 2026/8/19 9:20:44

最新资讯

飞算JavaAI和Deepseek-V4-Pro写多租户系统,6分钟vs15分钟差距在哪?
RAG项目启动指南:从需求定义到可验证技术约束
AI Agent工具调用治理:构建企业级安全与稳定框架
SMUDebugTool 从零到一实战攻略:AMD Ryzen 手动超频与 SMU、MSR 底层调试完整避坑指南
YuukiPS启动器从零上手:三分钟搞定原神多账号切换与私服连接
零跑S01:一款被低估的早期智能电动轿跑探索史

今日推荐

Windows 安卓应用安装终极方案:5分钟上手免费APK安装器,三步告别模拟器
WarcraftHelper 魔兽争霸3优化实战指南
抖音批量下载实战手册:用douyin-downloader把6小时手工劳动压缩到15分钟

本周热门

【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码
【双层规划,节点出清价,绿证交易,CVaR方法】两级电力市场环境下计及风险的省间交易商最优购电模型附Matlab代码
隐式mpc+自适应mpc+时变mpc,线性时变模型预测控制附Simulink仿真

本月精选

如何用DamaiHelper实现演唱会门票的智能自动化抢购:完整技术解决方案指南
第4篇:59 倍性能差距的索引瓶颈定位——一次教科书级的全表扫描调优
终极歌词批量下载神器:5分钟解决离线音乐库歌词同步难题

鸿蒙掌上驾考宝典应用开发42:鸿蒙应用安全——签名、权限与数据保护

发布时间:2026/8/19 9:20:44
鸿蒙掌上驾考宝典应用开发42:鸿蒙应用安全——签名、权限与数据保护 一、引言在移动应用开发中安全是一个不可回避的话题。从应用签名验证到权限管理从用户隐私保护到数据传输安全每一个环节都可能成为安全漏洞的突破口。DriverLicenseExam 项目作为一款集成华为账号登录、定位服务、推送通知等多项敏感功能的应用在安全方面做了充分的考量。本文将从应用签名、权限管理、数据保护、网络安全四个维度结合项目源码深入解析鸿蒙应用的安全实践。二、应用签名——应用的身份证2.1 签名的作用鸿蒙应用的签名机制类似于 Android 的 APK 签名主要目的包括身份验证确认应用的开发者身份完整性校验确保应用在发布后未被篡改信任链建立系统根据签名决定应用之间的信任关系2.2 签名配置在项目根目录的build-profile.json5中配置签名信息// build-profile.json5 签名配置{app:{signingConfigs:[{name:default,material:{certPath:***.cer,keyStorePath:***.p12,keyStorePassword:***,keyAlias:***,keyPassword:***}}],products:[{name:default,signingConfig:default,compatibleSdkVersion:5.0.0(12),runtimeOS:HarmonyOS}]}}2.3 签名流程在 DevEco Studio 中配置签名后构建 APK 时系统会自动完成签名。开发过程中需要注意调试签名 vs 发布签名开发阶段使用自动生成的调试证书发布前必须替换为正式的发布证书证书指纹配置在 AppGallery Connect 中配置签名证书指纹用于华为服务的鉴权密钥保护p12 密钥库文件需要妥善保管泄露会导致应用身份被盗用三、权限管理——最小权限原则3.1 权限声明在module.json5中声明应用所需的权限项目遵循了最小权限原则只申请真正需要的权限{module:{requestPermissions:[{name:ohos.permission.INTERNET,reason:用于网络请求},{name:ohos.permission.APPROXIMATELY_LOCATION,reason:用于获取当前位置},{name:ohos.permission.LOCATION,reason:用于获取精确位置},{name:ohos.permission.GET_NETWORK_INFO,reason:用于获取网络状态},{name:ohos.permission.READ_CALENDAR,reason:用于日历提醒},{name:ohos.permission.WRITE_CALENDAR,reason:用于日历提醒},{name:ohos.permission.APP_TRACKING_CONSENT,reason:用于广告追踪},{name:ohos.permission.VIBRATE,reason:用于答题振动反馈}]}}每个权限的reason字段说明了用途这是鸿蒙系统的强制性要求用户在授权时会看到这些说明。3.2 动态权限申请权限分为安装时授权和运行时授权两类。定位、日历等敏感权限需要在运行时动态申请// PermissionUtil.ts - 动态权限申请 export class PermissionUtil { private static _atManager: abilityAccessCtrl.AtManager abilityAccessCtrl.createAtManager(); private static _context: Context; public static async requestPermissions(permissions: Permissions[]) { const needAuthorized: Permissions[] []; // 检查每个权限的状态 for (let permission of permissions) { const isGranted await PermissionUtil._checkPermissions(permission); if (!isGranted) { needAuthorized.push(permission); } } if (!needAuthorized.length) return true; try { // 向用户请求授权 const data await PermissionUtil._atManager .requestPermissionsFromUser(PermissionUtil._context, needAuthorized); let grantStatus: number[] data.authResults; const needAuthorizedAgain: Permissions[] []; for (let i 0; i grantStatus.length; i) { if (grantStatus[i] 0) { // GRANTED - 用户已授权 } else if (grantStatus[i] -1) { // DENIED - 用户拒绝 needAuthorizedAgain.push(needAuthorized[i]); } } // 对拒绝的权限进行二次授权引导 PermissionUtil._requestPermissionsOnSetting(needAuthorizedAgain); } catch (error) { return false; } } }3.3 二次授权引导鸿蒙系统提供了一种特殊的二次授权机制——引导用户到系统设置页面开启权限private static async _requestPermissionsOnSetting(permissions: Permissions[]) { // 跳转到系统设置页引导用户手动授权 PermissionUtil._atManager.requestPermissionOnSetting( PermissionUtil._context, permissions ).then((data: abilityAccessCtrl.GrantStatus[]) { Logger.info(TAG, request permission on setting success: JSON.stringify(data)); }).catch((err: BusinessError) { Logger.error(TAG, Failed to request permissions on setting: err.message); }); }这种设计相比简单提示用户去设置页面开启权限提供了更流畅的用户体验。四、数据保护——用户隐私的盾牌4.1 日志脱敏在开发过程中日志是定位问题的重要工具。但日志中可能包含用户的敏感信息必须进行脱敏处理// 使用 %{public}s 标记可公开的信息 Logger.info(TAG, Succeeded in loading the content.); Logger.info(TAG, Current index: %{public}d, this.currentIndex); // 使用 %{private}s 标记敏感信息系统会自动脱敏 hilog.info(0x0000, TAG, User phone: %{private}s, userPhone);鸿蒙的 hilog 系统提供了内置的脱敏支持%{public}s公开信息正常输出%{private}s私有信息在 release 版本中会被自动替换为{private}4.2 用户信息保护// 手机号脱敏显示 AccountUtil.getUserInfo().phone a000******00; // 不保存密码等敏感信息 public static loginOut() { AccountUtil._accountInfo.idToken ; AccountUtil._userInfo.avatar $r(app.media.user_avatar); AccountUtil._userInfo.nickname $r(app.string.user_name); AccountUtil._userInfo.phone ; }退出登录时除了清理登录凭证还需要清理本地缓存的用户信息。4.3 隐私协议的约束力// 隐私协议勾选控制授权 Checkbox({ name: privacyCheckbox }) .select(this.isSelected) .onChange((value: boolean) { if (value) { this.isSelected true; this.controller.setAgreementStatus(loginComponentManager.AgreementStatus.ACCEPTED); } else { this.isSelected false; this.controller.setAgreementStatus(loginComponentManager.AgreementStatus.NOT_ACCEPTED); } });用户必须勾选并同意隐私协议后才能进行华为账号登录这是一种合规的最佳实践。五、网络安全——数据传输的保护5.1 HTTPS 加密传输项目中的网络请求使用 HTTPS 协议确保数据传输过程中的安全性// AxiosHttpModel 使用 HTTPS constructor(config: HttpRequestConfig, openMock: boolean false) { this._config config; this._instance axios.create({ ...config, baseURL: https://api.example.com, // 使用 HTTPS }); }5.2 Mock 数据的用途// Mock 数据仅用于开发阶段不上线到生产环境 class HttpApiMock { public getUserInfo(): PromiseBaseResponseGetUserInfoResp { const resp: BaseResponse { code: 0, data: { avatar: mockImage://ic_default_avatar, nickname: 华为用户, phone: 1XXXXXX, } }; return Promise.resolve(resp); } }Mock 数据可以帮助开发者在没有后端服务时进行开发调试但必须确保 Mock 代码不会出现在生产版本中。六、应用安全最佳实践总结6.1 安全清单安全领域最佳实践项目中实现应用签名使用正式证书签名的 APK 发布build-profile.json5 配置权限管理最小权限原则 动态申请PermissionUtil 二次授权日志安全敏感信息脱敏%{public}s / %{private}s用户数据不缓存敏感信息loginOut 清理数据隐私合规用户同意后方可登录Checkbox AgreementStatus网络安全HTTPS Mock 隔离Axios 请求封装6.2 常见安全风险防范逆向工程使用混淆配置obfuscation-rules.txt保护代码权限滥用不在 manifest 中声明不需要的权限数据泄露日志中不输出用户密码、token 等信息网络攻击校验服务器证书防止中间人攻击七、总结应用安全不是某个功能点而是一个贯穿整个开发流程的工程实践。DriverLicenseExam 项目展示了从编译阶段的签名保护、到运行时的权限管理、再到用户数据的隐私保护形成了一个完整的安全防护链。开发者在构建鸿蒙应用时应该从项目初始化阶段就将安全纳入考量而不是作为上线前的补丁。关键源码文件build-profile.json5— 签名配置products/entry/src/main/module.json5— 权限声明commons/commonLib/src/main/ets/utils/PermissionUtil.ets— 权限工具commons/commonLib/src/main/ets/utils/Logger.ets— 日志工具commons/network/src/main/ets/mocks/HttpApisMock.ets— Mock 数据

关于恒美微站

恒美微站专注于为个体商户、工作室提供极简自助建站服务,让每个人都能轻松拥有专业网站。

快速链接

  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心

服务项目

  • 可视化建站
  • 拖拽编辑
  • 主题定制
  • SEO 优化
  • 网站托管

联系方式

  • 📍 地址:北京市朝阳区建国路 88 号
  • 📞 电话:400-888-8888
  • ✉️ 邮箱:info@hmyw.cn
  • 🕐 时间:周一至周日 9:00-18:00

© 2024 恒美微站 hmyw.cn 版权所有 | 京 ICP 备 12345678 号