字节码HAR的代码防泄漏安全程度如何
==================

#### 问题现象

字节码HAR是否能做到代码防泄漏，使用IDE或其他工具是否能扫描到源码和资源？

#### 背景知识

HAR是静态共享包，当[工程级build-profile.json5](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/ide-hvigor-build-profile-app)中useNormalizedOHMUrl与[模块级build-profile.json5](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/ide-hvigor-build-profile)中byteCodeHar均为true时，构建HAR模块将生成二进制的格式，最终生成的.har产物即为[字节码HAR](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/ide-hvigor-build-har#section16598338112415)。

#### 解决方案

1.  源码HAR与字节码HAR的核心区别：
    
    | 
    **对比项**
    
     | 
    
    **源码 HAR**
    
     | 
    
    **字节码 HAR**
    
     |
    | :-- | :-- | :-- |
    | 
    
    **产物**
    
     | 
    
    包含原始的 ArkTS/TS/JS 源代码。
    
     | 
    
    包含编译后的.abc字节码文件。
    
     |
    | 
    
    **适用阶段**
    
     | 
    
    主要用于开发和调试阶段。
    
     | 
    
    适用于发布版本，提升性能和安全性。
    
     |
    | 
    
    **编译过程**
    
     | 
    
    需要再次编译为字节码后才能运行。
    
     | 
    
    直接运行，无需二次编译。
    
     |
    | 
    
    **安全性**
    
     | 
    
    源码可见，存在泄露风险。
    
     | 
    
    二进制格式，反编译难度较高。
    
     |
    
2.  源码HAR与字节码HAR产物资源文件：无论是源码HAR还是字节码HAR，资源文件部分（如图片、字符串、配置文件等）都保持不变，均为原始内容。也就是说，这部分内容并未经过编译或混淆处理，仍然存在泄露风险。因此，建议对敏感资源进行额外的保护处理。
3.  字节码HAR的特点与局限性：
    
    | 
    类别
    
     | 
    
    说明
    
     |
    | :-- | :-- |
    | 
    
    **概述**
    
     | 
    
    字节码 HAR 包含编译后的 ABC 字节码，非原始源码，可降低代码暴露风险，但无法完全杜绝泄漏。
    
     |
    | 
    
    **优势**
    
     | 
    
    使用编译后的字节码替代源码，降低源码直接暴露的风险。
    
     |
    |    | 
    
    .abc字节码为二进制格式，显著增加了攻击者逆向分析的难度。
    
     |
    | 
    
    **局限性**
    
     | 
    
    资源文件，module.json5等关键配置未加密，存在泄露风险。
    
     |
    |    | 
    
    专业攻击者仍可能通过反编译分析字节码逻辑，尽管难度较高。
    
     |
    |    | 
    
    字节码HAR本质上仍是编译产物，未进行源码级别的混淆处理，需额外配置混淆规则。
    
     |
    
4.  提升代码安全性的建议：
    *   在构建时使用release模式，避免编译过程中暴露调试信息。
    *   在[模块级build-profile.json5](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/ide-hvigor-build-profile)文件中配置源码混淆规则，推荐启用以下混淆选项：
        *   开启属性名称混淆：[\-enable-property-obfuscation](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/source-obfuscation#section-enable-property-obfuscation)。
        *   开启顶层作用域名称混淆：[\-enable-toplevel-obfuscation](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/source-obfuscation#section-enable-toplevel-obfuscation)。
        *   开启文件名混淆：[\-enable-filename-obfuscation](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/source-obfuscation#section-enable-filename-obfuscation)。
        *   开启导入导出名称混淆：[\-enable-export-obfuscation](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/source-obfuscation#section-enable-export-obfuscation)。
        *   代码压缩：[\-compact](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/source-obfuscation#section-compact)。
        *   删除console.\*语句：[\-remove-log](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/source-obfuscation#section-remove-log)。
        *   声明文件注释删除：[\-remove-comments](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/source-obfuscation#section-remove-comments)。
    *   敏感数据保护：
        *   避免在源码中直接明文存储敏感字符串，例如密钥、URL、账号密码等。
        *   推荐使用加密存储+运行时解密的方案保护敏感信息。
    *   使用第三方加固工具：
        *   可通过与安全厂商合作，集成专业的代码加固工具。