安全与权限
本页给出微应用开发中与安全相关的实践建议。其中部分要求与商店审核直接相关,发布前请对照自查。
最小权限
- 只声明用到的权限:每个权限都应能在微应用功能中找到明确用途。
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 / 依赖目录等无关文件
- [ ] 用户可见错误均为友好文案
- [ ] 请求的第三方接口有合法使用依据


