Json.NET JsonConvert(string,Type)是否使用JSchema隐式验证字符串?

时间:2017-09-11 15:15:22

标签: c# json validation security json.net

我试图弄清楚"安全"这个C#服务器端代码是针对恶意制作的"文本"字符串:

using Newtonsoft.Json;
...
public class FooController {
    private class FooData { ... }
    ...
        var fooObject = (FooData)JsonConvert.Deserialize(text, typeof(FooData));
    ...
}

查看documentation for Json.NET Schema,看起来JSchemaGenerator可用于为给定的C#类生成JSON模式,然后JSchemaValidatingReader可以使用它来验证入站文本,然后再使用JsonSerlializer对其进行反序列化。 / p>

我会放心,我知道这些步骤都是在invoking JsonConvert.Deserialize() with a type时自动完成 ,如上面的代码段所示。但不幸的是,我没有在newtonsoft.com上明确地看到这一点,只是在Deserialize()方法中抛出一些无效的JSON示例并不能说服我所有的安全角度都被覆盖。

我的噩梦场景是在API端点中使用这样的代码(可能与文本输入的长度进行上游检查)并且由注入攻击拥有。

0 个答案:

没有答案