如何抑制Fortify中的误报

时间:2013-10-04 19:59:52

标签: fortify

我有两个关于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>

提前感谢您的帮助

2 个答案:

答案 0 :(得分:1)

  1. 使用正则表达式解析。除非你认为你能够创建一个能够正确解析人类语言的正则表达式,否则我会不管它,只是将它作为一个问题进行审计。

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

  3.   

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

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

答案 1 :(得分:0)

在“Pattern”中,您可以使用Java-Regex。因此,如果您使用[gs] et_Text

,它应该可以工作