Django JSON反序列化安全性

2024-06-09 00:25:43 发布

您现在位置:Python中文网/ 问答频道 /正文

Django的JSON反序列化程序是否存在任何已知的安全漏洞?关于Python反序列化协议,人们普遍认为它们是完全不安全的,因此要避免解析不可信的数据。在

不过,我考虑的是一个分布式web应用程序,其中不同的服务器交换格式为JSON的模型记录。这些记录本身并不包含敏感数据,但我担心的是,被黑客攻击的服务器通过发送恶意格式的JSON攻击另一台服务器的能力。这可能吗?在

我通常在面向公众的环境中看到Django的JSON序列化程序,所以我希望它能够针对这种情况进行加固,但是我还没有找到任何解决任何安全问题的文档。在


Tags: 数据django模型程序服务器webjson应用程序
2条回答

默认情况下,当使用simplejson(Django使用的默认反序列化程序)时,可以从JSON转换为Python对象的对象类型是有限的。唯一的办法是,如果您正在使用^{}或{a3}方法或您自己的^{}对象的可选参数进行某种特殊解码。在

所以,只要你使用默认解码,你就很安全了。但是,如果您真的很担心,您应该在实际操作之前验证加载的JSON数据。在

我很难找出您认为JSON的不安全(或安全性)是什么。在

JSON是一种基于文本的数据交换格式。它没有任何内置的安全性。Django附带了一些函数来将查询集序列化和反序列化为JSON。但这些不能是“恶意的”或“不安全的”——它们只是数据。在

有些序列化协议(如pickling)可能不安全,因为它们可能包含代码,因此可能会反序列化以运行对系统有害的内容。序列化模型没有这个问题,因为它们不包含代码。在

当然,如果您使用JSON(例如)传递要删除的模型id列表,那么恶意用户就有可能包含一大堆您不想删除的id。但这又不是JSON的错——由您来确保您的业务逻辑正确地确定允许用户删除或修改哪些元素。在

相关问题 更多 >