1

以下 Coldfusion 代码由静态代码分析器 Veracode.com 测试:

<cfloop from="1" to="3" index="kontakt_idx">
    <tr class="rowclass#htmleditformat(kontakt_idx +1)#">
        <td>..</td>
    </tr>
</cfloop>

我得到结果:

Attack Vector: coldfusion.runtime.Cast._double
Description: This call to coldfusion.runtime.Cast._double() contains a cross-site scripting (XSS) flaw.

Veracode 不扫描 Coldfusion 代码本身。它必须使用 Adob​​e 提供的工具进行预编译。然而,我在 Veracode 网站上看到的结果给出了正确的行号。因此,我怀疑我被指向了错误的路线。我HTMLEditFormat()在获得第一次扫描结果后将其放回,但错误仍然存​​在。

这段代码怎么会导致 XSS?一个调用怎么会coldfusion.runtime.Cast._double导致 XSS 呢?将无效值强制转换为 double 时,Coldfusion 会引发异常。当我使用表单范围变量时,我遇到了类似的错误。在那里,在某些情况下,我可以简单地替换 Form 的使用。在另一件事上,cfloop from to我得到了结果Attack Vector: coldfusion.runtime.Cast._int。为什么 Veracode 有时声称有一个强制转换为 double 有时一个强制转换为 int?

我完全不确定在这种情况下我应该怎么做。当在计算中使用 Form 范围的变量时,我该怎么办 - 首先是为了保护我的应用程序,其次是为了满足 Veracode。

4

1 回答 1

1

我的建议是联系 Veracode 支持,但在这种情况下,我认为问题在于 ColdFusion 实现而不是您的代码。

旧版本的 ColdFusion 有一个针对某些异常类型的错误页面,这些异常类型本身就容易受到 XSS 的攻击。因此,您的代码中发生的事情是代码触发了异常,而不是强制转换本身是 XSS 错误。

Veracode 支持人员可以查看有问题的代码并验证这是怎么回事,但这是我对引擎可能会标记此错误的最佳猜测。

于 2016-03-04T02:01:32.523 回答