跨站脚本:验证不佳(输入验证和表示、数据流)

Shr*_*uti 4 java struts esapi fortify

我在 HP fortify 门户中扫描了我的应用程序,并遇到了一个问题:跨站点脚本:验证不佳(输入验证和表示、数据流)。

我已经在使用 ESAPI 库了。

我应该怎么做才能解决这个问题。是否有任何其他库/jar 来验证输入。

提前致谢。

use*_*982 5

Fortify“跨站点脚本:验证不佳”抱怨您的输出编码不正确或无效。输出编码(转义)的目的是将特殊字符(元字符)限制为文字字符串,因此它们不能作为命令执行。

要进行补救,您可以:

步骤1。确定谁将使用这个“待编码上下文”?

第2步。根据交付协议和下游需求对上下文进行正确编码。例如:

  • 如果在 URL 的 [?query] 部分使用数据,则需要找到一个函数来包装(又名编码、转义)18 个保留字符 (! * ' () ; : @ & = + $ , / ? #[ ]) 对 HTTP 协议具有特殊含义(不必对整个 URL 进行编码)。(详细信息请阅读RFC3986 Sec 2.2 )
  • 如果数据作为 XML 实体使用,则需要对 5 个元字符 (& < > " ') 进行编码(请检查W3C XML Spec Sec 2.4)。但是,这并不总是正确的。用作注释、处理指令或CDATA 部分中不需要编码。

步骤#3。收集一下编码示例,方便以后挑选使用:(抱歉,在发布代码时,部分内容发生了变化,所以发布为图片)

需要考虑 ESAPI 库的开销,一次修复是否值得加载 30 MB jar?
在此输入图像描述

在此输入图像描述

使用轻量级 org.owasp.encoder 库输出编码

在此输入图像描述