目前,我正在从事一个Winforms项目。 当我通过 CheckMarx 扫描我的 Winforms 应用程序时,我遇到了多个
Reflected_xss_all_clients
漏洞。
我知道Winforms 中没有脚本。 XSS
是一种网络威胁,但可能有某种方法可以在扫描过程中修复这些威胁。
这是错误代码第 1 部分:
private void UpdatePreviewValue()
{
try
{
// Set the preview value
if (txtFieldValue.Text != string.Empty)
{
// Show the preview value
lblPreview.Text = "(" + txtFieldValue.Text + ")";
}
else
{
// Show that there is no field value
lblPreview.Text = Properties.Resources.Std_Txt_Fld_NoFieldValue;
}
}
catch (Exception ex)
{
frmErrorHandler.ShowDataError(Properties.ErrorStrings.ErrorTitle_SrcFldCtlInteger_UpdatePreviewValue, DataErrorImageConstants.Exclamation, ex);
}
}
在上面的代码部分,
lblPreview.Text = "(" + txtFieldValue.Text + ")";
行抛出了Reflected_xss_all_clients
漏洞。
这是错误代码第 2 部分:
/// <summary>
/// Method to copy an existing node for moving inside a grid
/// </summary>
/// <param name="rowToCopy">GridRow to copy</param>
/// <returns>GridRow</returns>
private GridRow CopyGridRow(GridRow rowToCopy)
{
GridRow newRow = gridCategories.NewRow();
newRow.Tag = rowToCopy.Tag;
newRow.Cells[0].Text = rowToCopy.Cells[0].Text;
newRow.Cells[0].Image = rowToCopy.Cells[0].Image;
newRow.Cells[1].Text = rowToCopy.Cells[1].Text;
if (rowToCopy.HasRows)
{
foreach (GridRow nestedRow in rowToCopy.NestedRows)
{
newRow.NestedRows.Add(CopyGridRow(nestedRow));
}
}
return newRow;
}
在上面的代码部分中,
newRow.Cells[0].Text = rowToCopy.Cells[0].Text;
和newRow.Cells[1].Text = rowToCopy.Cells[1].Text;
行抛出了Reflected_xss_all_clients
漏洞。
这是错误代码第 3 部分:
/// <summary>
/// Method used to add a new discrete value to the listview
/// </summary>
private void AddDiscreteValue()
{
// check we have an entry to add
if (txtDiscreteValue.Text != "")
{
SetDiscreteValue(txtDiscreteValue.Text, true, null, false);
}
}
在上面的代码部分,
SetDiscreteValue(txtDiscreteValue.Text, true, null, false);
行抛出了针对txtDiscreteValue.Text
的Reflected_xss_all_clients漏洞
如果可能,请建议任何补救方法。
您可以在 ASP.NET Core 中使用 HtmlSanitizer NuGet 包。
Checkmarx 将跟随输入中的字符串进行使用。有时它会识别出未 fillterd 传输到前端的变量作为 XSS。
对于我来说,我总是忽略 Checkmarx 报告的 XSS。也许您可以在使用字符串变量之前使用填充函数。像这样
txtFieldValue.Text=cleanXSS(txtFieldValue.Text)
关于cleanXSS(),google后可以找到很多例子