我该如何修复 SCS0028?
How do I fix SCS0028?
Visual Studio 中的安全扫描警告在构建期间显示。目前,我正在处理这些警告以将其删除。我尝试了几个 MSDN 站点,但没有成功。我也读过 OWSAP,但它们与 C# 没有明确的关系。
代码:
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 以获得概念证明。
未针对警告实施代码修复程序,这就是 "Show potential fixes" link 不起作用的原因。解决问题的选项太多,因此必须手动完成。您是否单击了 SCS0028 link 以了解可能的解决方案?
如果输入是可信的,如果您曾经使用过任何 Visual Studio 分析器,则另一个标准操作是抑制。 Here is an article by Microsoft 关于功能。
我觉得UI不是很直观,因为你必须点击带下划线的那段代码,然后才会在抑制菜单可用的行的开头出现一个气泡:
另一个可用菜单的位置是错误列表:
Visual Studio 中的安全扫描警告在构建期间显示。目前,我正在处理这些警告以将其删除。我尝试了几个 MSDN 站点,但没有成功。我也读过 OWSAP,但它们与 C# 没有明确的关系。
代码:
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 以获得概念证明。
未针对警告实施代码修复程序,这就是 "Show potential fixes" link 不起作用的原因。解决问题的选项太多,因此必须手动完成。您是否单击了 SCS0028 link 以了解可能的解决方案?
如果输入是可信的,如果您曾经使用过任何 Visual Studio 分析器,则另一个标准操作是抑制。 Here is an article by Microsoft 关于功能。
我觉得UI不是很直观,因为你必须点击带下划线的那段代码,然后才会在抑制菜单可用的行的开头出现一个气泡:
另一个可用菜单的位置是错误列表: