确保在Django项目中安全加载JSON、XML和YAML

8 投票
1 回答
1018 浏览
提问于 2025-04-17 19:46

我正在维护一个运行中的Django 1.5应用。

最近,有很多关于加载JSON、XML和YAML对象的安全漏洞的讨论。如果我理解得没错,输入的数据是经过精心设计的,目的是利用加载函数中的漏洞。

现在,我对Django(或者我们使用的那些第三方应用)在哪里使用这些协议一点头绪都没有。我该如何确保自己不受这些漏洞的影响呢?我需要以某种方式确保Django安全地加载JSON、XML和YAML吗?

1 个回答

1

Django 默认情况下不接受用户以这些格式编码的输入,通常第三方应用也不会接受。不过,检查一下用户可以看到的部分是很有必要的,确保没有问题。主要关注的地方是 API 提供者,比如 Tastypie、Django REST Framework 等。如果你使用的是最新版本,应该是安全的,但最好还是测试一下确认一下。

如果你的应用中有加载这些格式的内容,一定要使用 defusedxml 和 YAML 的 safe_load 方法。标准库中的 json 模块应该是安全的,不容易受到这些攻击。

撰写回答