c# - 我该如何修复 SCS0028?

标签 c# xmlserializer suppress-warnings security-code-scan

Visual Studio 中的安全扫描警告会在构建期间显示。目前,我正在处理这些警告以将其删除。我尝试了几个 MSDN 站点,但没有成功。我也读过 OWSAP,但它们与 C# 没有明显的关系。

enter image description here

代码:

public static class XMLUtility
    {
        public static T DeserializeXML<T>(this string xmlString)
        {
            T returnValue = default(T);
            if (string.IsNullOrEmpty(xmlString))
                return returnValue;
            XmlSerializer serial = new XmlSerializer(typeof(T));
            StringReader reader = new StringReader(xmlString);
            object result = serial.Deserialize(reader);
            if (result != null && result is T)
            {
                returnValue = ((T)result);
            }
            return returnValue;
        }
    }

最佳答案

首先警告是有效的,因为类型 T 和 xmlString 是从外部传递的并且可能不受信任(用户输入)。你可以查看ysoserial.net用于概念验证。

未针对警告实现代码修复程序,这就是“显示潜在修复程序”链接不起作用的原因。解决问题的选项太多,因此必须手动完成。你点击了SCS0028 link吗?阅读潜在的解决方案?

如果输入是可信的,如果您曾经使用过任何 Visual Studio 分析器,则另一个标准操作是抑制。 Here is an article by Microsoft 关于功能。

我发现 UI 不是很直观,因为你必须点击带下划线的代码,然后才会在抑制菜单可用的行的开头出现一个气泡:

enter image description here

菜单可用的另一个地方是错误列表:

enter image description here

关于c# - 我该如何修复 SCS0028?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51184301/

相关文章:

css - 如何抑制 Aptana Studio 3 中的某些 CSS 错误?

c# - 是否可以将依赖属性框架插入 Winform 或 ASP.NET?

c# - 得到一个不正确的 OutOfRange 异常

c# - 如何使用 C# 和 NAudio 将 []Int16 转换为 []float?

c# - XmlSerializer 缓存工厂

java - Xalan Transformer 转换破坏了 Unicode 6 星体字符

c# - 使用 COM-Interop 将数组从 JS 返回到 C#

.net - 反序列化缺失整数时不同的 .NET XML 序列化器行为

gcc - 如何禁用警告: null character(s) preserved in literal?

Android Studio - 删除安全异常警告