我正在维护一个生产 Django 1.5 应用程序。
最近有很多关于加载 JSON、XML 和 YAML 对象的各种漏洞的噪音。如果我理解正确,输入是精心设计的,以利用加载功能中的错误。
现在,我不知道 Django(或我们使用的几十个第三方应用程序)在哪里使用这些协议。我怎样才能免受此类漏洞的影响?我是否需要以某种方式确保 Django 安全地加载 JSON、XML 和 YAML?
默认情况下,Django 不接受这些格式的用户编码输入,通常第三方应用程序也不接受,但值得对面向用户的部分进行审计以确保确定。大的将是 API 提供者(Tastypie、Django REST Framework 等)。如果您使用的是当前版本,您应该是安全的,但值得测试/确认。
如果您从这些格式的应用程序中加载任何内容,请务必使用defusedxml
YAMLssafe_load
方法。标准库json
模块应该免受这些攻击。