确保在Django项目中安全加载JSON、XML和YAML
我正在维护一个运行中的Django 1.5应用。
最近,有很多关于加载JSON、XML和YAML对象的安全漏洞的讨论。如果我理解得没错,输入的数据是经过精心设计的,目的是利用加载函数中的漏洞。
现在,我对Django(或者我们使用的那些第三方应用)在哪里使用这些协议一点头绪都没有。我该如何确保自己不受这些漏洞的影响呢?我需要以某种方式确保Django安全地加载JSON、XML和YAML吗?
1 个回答
1
Django 默认情况下不接受用户以这些格式编码的输入,通常第三方应用也不会接受。不过,检查一下用户可以看到的部分是很有必要的,确保没有问题。主要关注的地方是 API 提供者,比如 Tastypie、Django REST Framework 等。如果你使用的是最新版本,应该是安全的,但最好还是测试一下确认一下。
如果你的应用中有加载这些格式的内容,一定要使用 defusedxml
和 YAML 的 safe_load
方法。标准库中的 json
模块应该是安全的,不容易受到这些攻击。