第 11 章:输入、输出与依赖怎样管理
输入是一份任务包
把任务需要的文件整理成一个小包,列明文件名、类型、大小和用途。原始客户数据不应因为“可能用得上”就全部进入沙箱。控制器最好在放入前检查大小和格式,避免非常大的文件或不符合预期的数据。
压缩包解压还存在路径问题:归档里的路径可能试图跳出目标目录。不要直接将陌生压缩包解压到重要目录。真实系统应校验解压后的目标路径、文件数量、总大小,以及符号链接等特殊文件。
产物仍然不可信
运行结束后的 HTML、脚本或压缩包,也可能包含主动内容或危险路径。报告生成在沙箱中,不代表在宿主机直接打开或执行就安全。优先选择数据格式明确的输出,并检查文件类型、大小、结构和数量。
第 8 章校验 JSON,只适用于已知脚本的演示。对抗恶意代码时,还要考虑文件竞争、符号链接、导出机制和解析器风险。更完整的方案会先停止沙箱,再经受控通道导出到隔离的暂存区进行检查。
依赖需要可追溯
记录镜像摘要、依赖锁文件、系统版本和启动参数,可以帮助复现问题。镜像标签会变化,依赖包也可能更新;同样的自然语言任务不保证下次使用相同软件环境。
缓存能提高效率,也可能跨任务泄露信息。对共享缓存应明确哪些内容可公开、谁可写入、如何失效。不要把含私人代码或凭证的整个环境快照变成公共模板。