我在一个短期合同的演出,试图修补漏洞的一些在他们的遗留代码。我工作的应用是传统的ASP(VBScript)的和.NET 2.0(C#)的组合。一个他们所购买的工具是Fortify的360

下面是应用程序中的当前传统的ASP页:

<%@ Language=VBScript %>
<%
Dim var

var = Request.QueryString("var")
' do stuff
Response.Redirect "nextpage.asp?var=" & var
%>

我知道,我知道,短和很危险的。

所以我们写了一些(EN / DE)编码器和审定/核查程序:

<%@ Language=VBScript %>
<%
Dim var

var = Decode(Request.QueryString("var"))
' do stuff
if isValid(var) then 
    Response.Redirect "nextpage.asp?var=" & Encode(var)
else
   'throw error page
end if
%> 

和仍然Fortify的其标记为易受处理标头来。 Fortify的是如何或究竟找谁?

我怀疑Fortify的是寻找特定关键字的原因是对事物.NET方面,我可以包括微软AntiXss组装和通话功能,如GetSafeHtmlFragmentUrlEncode和Fortify的是幸福的。

任何意见?

有帮助吗?

解决方案

贾勒特R为右;你将需要使用规则生成器来创建一个数据流净化规则;指定函数名作为小写和语言如“VB”。

您规则应该是这个样子:

        <DataflowCleanseRule formatVersion="3.10" language="vb">
            <RuleID>12345-67890-BABE-CAFE</RuleID>
            <TaintFlags>-XSS,+VALIDATED_CROSS_SITE_SCRIPTING</TaintFlags>
            <FunctionIdentifier>
                <NamespaceName>
                    <Pattern/>
                </NamespaceName>
                <ClassName>
                    <Pattern/>
                </ClassName>
                <FunctionName>
                    <Pattern CaseInsensitive="true">(?i)decode</Pattern>
                </FunctionName>
                <ApplyTo implements="true" overrides="true" extends="true"/>
            </FunctionIdentifier>
            <OutArguments>return</OutArguments>
        </DataflowCleanseRule>

其他提示

如果编码方法是你自己(或一个Fortify的不承认),你将不得不编写自定义规则,告诉它,一旦它通过运行脏字段(VAR在这种情况下)是干净的编码方法。

有不满意XDR(跨站点重定向)的电位和潜在的HTTP响应分裂。 Fortify的可能不知道你的编码程序做什么,因此它的标志是(用户控制变量在重定向使用)。 顺便说一句,Cat.Net做同样的事情。 我认为你是对的AntiXSS将使它高兴。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top