如何避免Winforms c#中的Reflected_xss_all_clients漏洞

Posted

技术标签:

【中文标题】如何避免Winforms c#中的Reflected_xss_all_clients漏洞【英文标题】:How to avoid Reflected_xss_all_clients vulnerabilities in Winforms c# 【发布时间】:2021-05-01 09:01:27 【问题描述】:

目前,我正在为一个 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_clientsvulnerabilities。

这里是第 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 漏洞

如果可能,请提出任何补救方法。

【问题讨论】:

我担心 Checkmarx 正在将您的项目视为 WebApp,因为文件的扩展名来自 Web 系列。你有这样的文件吗? 忽略它。 @baruchiro,我没有这样的文件。除了忽略,还有什么方法可以处理吗? @user14285851 我同意 baruchiro 的观点,您的安全团队应该选择一个 Checkmarx 预设,该预设不包含明显不适用于您的 Winforms 应用程序的 Web 相关漏洞。也可以通过预设管理器checkmarx.atlassian.net/wiki/spaces/KC/pages/49250315/…创建新预设 @RomanCanlas 不要 Checkmarx 预设适用于整个解决方案,而不是单个项目?如果我的解决方案同时包含 Web 和 Windows 窗体项目,我是 SOL 吗? 【参考方案1】:

Checkmarx 将遵循从输入到使用的字符串。有时它会将未填充的变量识别为 XSS 传输到前端。

对于我来说,我总是忽略 Checkmarx 报告的 XSS。也许您可以在使用字符串变量之前使用填充函数。像这样

     txtFieldValue.Text=cleanXSS(txtFieldValue.Text) 

至于cleanXSS(),google之后可以找到很多例子。

【讨论】:

您能否提供此类示例的链接。我通过谷歌尝试但没有找到。 programmersought.com/article/35082068090

以上是关于如何避免Winforms c#中的Reflected_xss_all_clients漏洞的主要内容,如果未能解决你的问题,请参考以下文章

从 C# winforms 执行批处理文件忽略超时

C# Winforms 选项卡控制选项卡宽度错误

如何避免重复验证事件 Winforms

WinForms 中的 C# 虚拟列表视图

[CefSharp] 如何在JavaScript中调用C#代码

如何根据 c# winforms 中的列日期和名称将 sql 中的数据输入到特定的 datagridview 单元格中