使用C#反序列化不受信任的数据

问题描述 投票:1回答:1

我有以下C#代码,它从Checkmarx中收到“高”错误。我看不出有什么问题。

var dataDirectoryPath = AppDomain.CurrentDomain.GetData("DataDirectory").ToString(); 
var json = File.ReadAllText($"{dataDirectoryPath}{Path.DirectorySeparatorChar}somefile.json");

var settings = new
    JsonSerializerSettings{TypeNameHandling=TypeNameHandling.None};     
var targetPathSettings = JsonConvert.DeserializeObject<List<TargetPathSetting>>(json, settings);

它出现此错误:

在文件yyy中以xxx处理的序列化对象ReadAllText由文件zzz中的DeserializeObject反序列化

C#代码如下:

public class TargetPathSetting
{
    public string PathSettingName { get; set; }
    public PathSetting PathSetting { get; set; }
}


public class PathSetting
{
    public string BaseUrl { get; set; }
    public string ApplicationIdUri { get; set; }
}

我看不到文件中的任何内容都会引起任何类型的问题,尤其是使用TypeNameHandling.None设置。

static-code-analysis checkmarx
1个回答
0
投票

问题出在C#的标准Checkmarx查询中。在这种情况下,Checkmarx无法识别此代码的更正。要修复它,您应该使用CxAudit并修改此查询。

© www.soinside.com 2019 - 2024. All rights reserved.