2

我有两个关于 Fortify 的问题。

1 - 假设我有一个 Windows 窗体应用程序,它要求输入用户名和密码,密码文本框的名称是 texboxPassword。因此,在设计器文件中,您具有由设计器生成的以下内容。

// 
// texboxPassword
// 
this.texboxPassword.Location = new System.Drawing.Point(16, 163);
this.texboxPassword.Name = "texboxPassword";
this.texboxPassword.Size = new System.Drawing.Size(200, 73);
this.texboxPassword.TabIndex = 3;

Fortify 在评论问题中将此标记为密码。如何通过创建自定义规则来抑制这种情况?我不想压制整个问题,因为我仍然想捕获某些模式(例如密码后跟 = 或 : 在评论中),但是包含密码的任何行都被标记的全面搜索会产生如此多的误报。我研究了创建结构规则,但无法弄清楚如何删除关联的标签(无论如何我在哪里可以找到评论中的密码标签?)

2 - 假设我有一个自定义 UI 控件。这个控件 html 对所有内容进行编码,在我的上下文中,它足以避免 XSS。不用说,它被 Fortify 标记了。当我的 UI 中有某种控件类型并且它的所有方法在我的上下文中对 XSS(它们进行清理)都是安全的时,如何抑制 XSS?我尝试了一个 DataflowCleanseRule(带有一个标签,只是为了测试这个概念),并想将 get_Text() 和 set_Text() 标记为清理函数,但它没有任何区别,Fortify 仍然将它标记为 XSS。

<DataflowCleanseRule formatVersion="3.16" language="dotnet">
                <RuleID>0D495522-BA81-440E-B191-48A67D9092BE</RuleID>
                <TaintFlags>+VALIDATED_CROSS_SITE_SCRIPTING_REFLECTED,+VALIDATED_CROSS_SITE_SCRIPTING_PERSISTENT,+VALIDATED_CROSS_SITE_SCRIPTING_DOM,+VALIDATED_CROSS_SITE_SCRIPTING_POOR_VALIDATION</TaintFlags>
                <FunctionIdentifier>
                    <NamespaceName>
                        <Pattern>System.Web.UI.WebControls</Pattern>
                    </NamespaceName>
                    <ClassName>
                        <Pattern>Label</Pattern>
                    </ClassName>
                    <FunctionName>
                        <Pattern>_Text</Pattern>
                    </FunctionName>
                    <ApplyTo implements="true" overrides="true" extends="true"/>
                </FunctionIdentifier>
                <OutArguments>return</OutArguments>
            </DataflowCleanseRule>

预先感谢您的帮助

4

2 回答 2

1
  1. 这是使用正则表达式解析的。除非您认为您能够创建一个可以正确解析人类语言的正则表达式,否则我会不理会它,只是将其审核为不成问题。

  2. Pattern 标记在正文中使用 java 正则表达式,因此应按照 user2867433 的建议使用。但是,你说

这个控件 html 对所有内容进行编码,在我的上下文中,它足以避免 XSS

如果您要使用自定义规则,则必须假设它可以在每个上下文中工作,例如将来有人编写一段使用 get_Text 的代码,然后将其直接放入一段 JavaScript,html 编码将什么都不做来阻止这里的 XSS 问题。由于使用了验证,我会再次建议将其审核为不是问题或误报,并解释为什么它在这种情况下足够好

于 2013-11-28T10:42:46.277 回答
0

在“模式”中,您可以使用 Java-Regex。因此,如果您使用 [gs]et_Text 它应该可以工作

于 2013-10-10T14:10:40.987 回答