11. 安全考虑
安全问题不是本备忘录的主要关注点. 但是, 在 MIME 上下文中有若干安全相关问题值得注意.
潜在安全风险
1. Content Type 欺骗
恶意用户可能发送声称属于某一类型但实际属于另一类型的数据. 例如, 可执行文件可能被标记为 text/plain.
缓解措施:
- 实现内容类型验证
- 使用文件签名检测
- 隔离可执行内容
2. 编码攻击
某些编码可能被用于隐藏恶意内容或绕过安全扫描.
缓解措施:
- 在安全扫描前解码所有内容
- 实施纵深防御
- 警惕过度嵌套的编码
3. 资源耗尽
非常大的或恶意构造的 MIME 消息可能消耗过多资源.
缓解措施:
- 实现大小限制
- 设置处理超时
- 限制嵌套深度
4. 隐私问题
Content-ID 和其他标识符可被用于跟踪.
缓解措施:
- 限制外部资源加载
- 提供隐私模式
- 提供用户控制和透明度
推荐安全实践
- 验证输入: 始终验证 Content-Type 和 Content-Transfer-Encoding
- 限制处理: 为 MIME 解析设置资源限制
- 隔离执行: 在沙箱中处理未知内容类型
- 用户警告: 向用户警告潜在危险的内容类型
- 定期更新: 保持 MIME 解析器和邮件客户端为最新
要点:
- MIME 本身不提供安全功能
- 安全措施必须在应用层实现
- 始终假定输入可能是恶意的
- 使用纵深防御策略