TypeNameHandling.All
:在不信任数据启用newtonsoft.json,可以根据传入的JSON中的TypeNameHandling
TypeNameHandling.All
$type
安全含义
恶意参与者可以通过注入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中文网其他相关文章!