【发布时间】:2019-12-19 03:41:16
【问题描述】:
我有以下 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 设置。
【问题讨论】:
-
我没有得到你的代码的这个结果。
-
这是一段较大代码的片段,但 json 文件是实际代码中的一个变量。这有关系吗?
-
我不知道。你知道错误的名称是什么吗?这是
Deserialization_of_Untrusted_Data吗? -
是的,它是 Deserialization_of_Untrusted_Data
-
我认为这是误报,因为您已经将 TypeHandling 设置为 none 作为安全措施
标签: static-code-analysis checkmarx