首页 > 后端开发 > C++ > Newtonsoft JSON的Typenamehandling是否可以安全地阐明外部JSON数据?

Newtonsoft JSON的Typenamehandling是否可以安全地阐明外部JSON数据?

Susan Sarandon
发布: 2025-01-31 16:31:09
原创
475 人浏览过

Is Newtonsoft JSON's TypeNameHandling Safe for Deserializing External JSON Data?

> newtonsoft json's TypeNameHandling:外部JSON

的安全考虑因素

> Newtonsoft的JSON库提供TypeNameHandling>用于包含类型信息的json的

。 但是,将其与不受信任的外部JSON来源一起使用,带来了重大的安全风险。

使用TypeNameHandling.All

进行挑选外部JSON的安全风险

没有ASerializationBinder>,TypeNameHandling.All>允许Deserializer创建JSON元数据中指定的任何类型的实例。 这打开了可能在您的应用程序或.NET框架中发送有害类型的恶意行为者的脆弱性。

>

示例漏洞:

考虑一个简单的Car类:

public class Car
{
    public string Maker { get; set; }
    public string Model { get; set; }
}
登录后复制

看似无害的JSON有效载荷:

{
   "$type": "Car",
   "Maker": "Ford",
   "Model": "Explorer"
}
登录后复制

...可以正确地审理。但是,恶意演员可以制作针对系统类的有效负载:System.CodeDom.Compiler.TempFileCollection>

{
   "$type": "System.CodeDom.Compiler.TempFileCollection",
   "BasePath": "%SYSTEMDRIVE%",
   "KeepFiles": "False",
   "TempDir": "%SYSTEMROOT%"
}
登录后复制

,一个可序列化的临时文件的可序列化类具有最终确定器,可在垃圾收集时删除文件。 恶意有效载荷可以将此终点指向受害者系统上的任意文件,从而导致无意外的文件删除而没有用户交互。 这只是一个例子。许多其他系统类可以以相似的方式利用。TempFileCollection>

因此,从具有

>的外部来源进行启用的JSON时,请始终使用SerializationBinder>启用这些风险。 仅允许您明确信任和控制的类型进行绝对化。TypeNameHandling>

以上是Newtonsoft JSON的Typenamehandling是否可以安全地阐明外部JSON数据?的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板