在线咨询
Skip to content

安全与权限 ​

本页给出微应用开发中与安全相关的实践建议。其中部分要求与商店审核直接相关,发布前请对照自查。

最小权限 ​

  • 只声明用到的权限:每个权限都应能在微应用功能中找到明确用途。tasks.file.access、webview 这类敏感权限,审核时会重点核对;
  • 不要"预防性"声明:暂时用不到的权限不要提前申请,后续版本需要时再加;
  • 权限与 API 的对应关系见权限模型。

凭据与敏感数据 ​

  • token / Cookie 等凭据存入 xunlei.storage,不要硬编码在代码里:

    ts
    // ✅ 正确:运行时获取并持久化
    await xunlei.storage.set('cookie', cookieHeader);
    
    // ❌ 错误:硬编码在源码里
    const COOKIE = 'session=abc123...';
  • 存储按微应用隔离,其它微应用无法读取其中的数据;

  • 凭据失效时及时清理(remove),不要无限累积;

  • 用户主动注销 / 退出登录时,清理对应凭据。

网络请求 ​

网络请求由 network.urls 白名单约束,随之而来的责任:

  • 白名单按需声明,只声明功能确实要访问的地址,不要为了方便配置大范围通配规则;
  • 只请求与功能相关的接口,不要把微应用当作通用代理;
  • 目标接口返回的数据要校验后再使用,不要盲目 eval / 动态执行远端返回的代码(页面环境的 CSP 会拦截远程脚本,但事件脚本中 eval 可用,请自行把关);
  • 请求行为可能经过平台安全审计,异常行为(高频扫描、攻击性请求)会导致微应用被下架。

页面与资源 ​

  • 所有页面资源打包在微应用包内,这本身就是平台的安全边界——不要尝试绕过(如把脚本藏在数据里动态执行);
  • 不要在微应用中嵌入第三方统计 / 广告脚本;
  • zip 包中不要携带无关文件(源码、.map、node_modules 等),既是体积要求也是安全要求。

错误信息 ​

  • 面向用户的错误使用 MessageError,给出可理解、可行动的提示:

    ts
    // ✅ 好
    throw new MessageError('该资源已被删除或不可访问');
    
    // ❌ 差
    throw new MessageError(String(error)); // 内部错误信息直接甩给用户
  • 日志中不要输出完整凭据(token 打码后再记录);

  • 内部异常细节写入 xunlei.logger.error 供排查,用户提示保持简明。

上架自查清单 ​

提交商店审核前,建议过一遍:

  • [ ] permissions 中每一项都有明确功能用途
  • [ ] 无硬编码的 token / 账号 / 密钥
  • [ ] 无远程脚本、无动态执行远端代码
  • [ ] zip 包内无源码 / sourcemap / 依赖目录等无关文件
  • [ ] 用户可见错误均为友好文案
  • [ ] 请求的第三方接口有合法使用依据