首页 >后端开发 >C++ >在newtonsoft.json中使用`typenamehandling.ll.

在newtonsoft.json中使用`typenamehandling.ll.

Patricia Arquette
Patricia Arquette原创
2025-01-31 16:26:09367浏览

> newtonsoft.json'sTypeNameHandling.All:在不信任数据

时,安全风险 Newtonsoft.json中的属性决定了如何应对多态对象。 将其设置为

启用newtonsoft.json,可以根据传入的JSON中的属性实例化类型。 但是,在处理不信任数据时,这会呈现出很大的安全漏洞。> TypeNameHandlingTypeNameHandling.All $type

安全含义Is Using `TypeNameHandling.All` in Newtonsoft.Json Safe for Deserializing Untrusted Data?

恶意参与者可以通过注入JSON中指定有害类型的属性来利用>。 这使他们可以执行任意代码或在目标系统上执行不需要的操作。> 考虑一个看似无害的阶级:

TypeNameHandling.All恶意的JSON有效载荷看起来像这样:$type

>

<code class="language-csharp">public class Vehicle
{
    public string Make { get; set; }
    public string Model { get; set; }
}</code>
属性是良性的,但

属性会迫使创建A

对象,从而有可能在系统上启动有害过程。 这绕过正常类型检查并打开各种攻击的门。
<code class="language-json">{
  "$type": "System.Diagnostics.Process",
  "Make": "Attack",
  "Model": "DeleteC:\ImportantFiles"
}</code>
>

Make缓解风险Model$type 为了防止这种攻击,请避免使用System.Diagnostics.Process>从外部,不受信任的来源进行挑选JSON时使用。 而是使用

禁用类型名称处理。 另外,可以实现自定义

,以精心控制在避难化期间允许使用哪些类型,从而有效地白名单的安全类型。 这为处理多态性的估算化提供了一种更详细,更安全的方法。

以上是在newtonsoft.json中使用`typenamehandling.ll.的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn