【发布时间】:2019-03-05 00:28:29
【问题描述】:
我有以下相关的 C# 代码:
json = File.ReadAllText(path);
isStudentObject= JsonConvert.DeserializeObject<List<XXStudentCode>>(json).Any(sv => sv.SCODE.Equals(code));
我的安全软件(静态代码分析)扫描我们的应用程序,它不喜欢上面的代码,即 ReadAllText 部分。它说这是“不可信数据的高风险反序列化”。
所以我的问题是:如何重构此代码以使数据“可信”?我尝试了不同的验证方法,但没有奏效。任何帮助表示赞赏。
【问题讨论】:
-
这与 JSON 无关,问题在于尝试从(可能)不受信任的位置读取文件
-
安全软件有没有更多提示?上次我修复了 curse-fest 的安全漏洞时,我最终编写了一个文件和路径名清理程序,我认为我们做了一些事情来断言哪些路径是安全的
-
不,实际上是它给我的唯一错误。它说什么:“结果 = Common_High_Risk.Deserialization_of_Untrusted_Data();”
-
阅读此线程以了解为什么存在此错误的一些很好的示例:security.stackexchange.com/questions/13490/…