模块模式通过结构化封装为动态过滤不可信数据建立可信执行边界,在跨端应用中将过滤逻辑嵌入数据流转关键节点,分层构建可组合、可验证、可热更新的过滤流水线。

模块模式本身不直接“过滤数据”,而是提供一种结构化、可隔离、可管控的代码组织方式,为动态过滤不可信注入数据建立可信执行边界和策略调度基础。在跨端混合应用(如鸿蒙+Flutter、React Native、Tauri等)中,关键不是“用模块写得更整齐”,而是利用模块的封装性、依赖显式性与生命周期可控性,把过滤逻辑嵌入到数据流转的关键节点。
明确数据注入入口点并模块化拦截
第三方不可信数据通常来自:WebView加载的远程HTML/JS、原生侧通过Platform Channel传入的JSON、本地存储读取的缓存、网络SDK返回的原始响应体。这些入口必须被识别为“污染源”,并在模块设计初期就划分为独立的数据接入模块(如 DataIngressModule),禁止业务逻辑模块直接访问原始输入。
- 每个入口模块内部强制执行初步净化:URL解码后做协议白名单(仅允许https://、data:)、JSON解析前校验顶层结构、字符串截断至预设最大长度
- 模块导出统一接口,例如
ingest(payload: unknown): SafePayload,返回已标记信任等级的对象,而非原始字符串或any类型 - 拒绝在模块外裸露
eval、innerHTML、Function constructor等高危API调用路径
构建分层过滤流水线模块
不要把所有过滤逻辑堆在一个函数里。按语义拆分为可组合、可开关的模块链,例如:
- SyntaxSanitizerModule:针对文本类输入,用正则白名单剔除script/style标签、onxxx事件属性、javascript:伪协议
-
ContextAwareEscaperModule:根据输出目标自动选择转义方式——插入DOM时用
textContent或DOMPurify.sanitize(),拼接URL时用encodeURIComponent(),生成JSON时用标准序列化器 - SchemaValidatorModule:对结构化数据(如API响应)加载运行时Schema(如Zod或Yup定义),拒绝字段缺失、类型错位、枚举越界等非法形态
各模块之间通过明确的输入/输出契约通信,不共享状态,便于单元测试与灰度替换。
将过滤能力绑定到鸿蒙/Android/iOS原生安全机制
跨端场景下,纯Dart或JS层过滤易被绕过。必须让模块感知并调用平台级防护能力:
- 在鸿蒙环境,Flutter模块启动时主动注册
HUKS密钥句柄,用于验证签名后的配置数据是否被篡改 - 调用
ohos.security.cert模块校验HTTPS证书链,阻断中间人注入的响应体 - Android端通过
ContentProvider封装敏感数据读写,Flutter侧仅能通过受控URI访问,避免直接操作SharedPreferences或SQLite - iOS端启用
App Attest验证运行环境完整性,拒绝在越狱设备上加载未签名的过滤规则包
运行时动态加载与热更新过滤规则
攻击手法持续变异,硬编码规则很快失效。模块应支持从可信源(如HUAWEI AppGallery安全通道、企业内网HTTPS endpoint)拉取最新规则集:
- 规则以JSON Schema描述,包含匹配模式(正则/AST节点路径)、动作(block / sanitize / warn)、生效范围(特定API路径/用户角色)
- 模块内置校验逻辑:下载后用内置公钥验签,SHA256哈希比对,防止规则被劫持篡改
- 新规则加载后触发模块内状态重置,旧缓存自动失效,无需重启进程
这种设计使过滤能力随威胁情报实时演进,而非发布一次就长期固化。











