HP Fortify——注释方法参数

2023-11-22

我正在尝试消除 Java 应用程序的 HP Fortify 扫描中的误报。

此方法会导致“侵犯隐私”问题(PrintWriter 是 servlet 响应)

 private void writeOutput(String passwordRules, PrintWriter out) {
      ...
      out.print(passwordRules);
      ...
 }

这是因为 Fortify 遵循命名约定,决定passwordRules包含私人数据。但我的passwordRules不是私有数据——它包含诸如“最少 8 个字符”之类的内容。

我可以通过更改变量的名称来消除错误。但是原则上我不想为了源代码分析器的利益而牺牲代码的可读性。

我希望这能解决它:

 private void writeOutput(@FortifyNotPassword String passwordRules, PrintWriter out) ...

然而,注释似乎不是针对该上下文编写的:

 The annotation @FortifyNotPassword is disallowed for this location.

I tried:

 private void writeOutput(String passwordRules, PrintWriter out) {
      ...
      @FortifyNotPassword String rules = passwordRules;
      out.print(rules);
      ...
 }

...但这并不能消除误报。 (这违背了我不降低代码可读性的原则)。

我也用@FortifyNotPrivate尝试了上述方法,得到了相同的结果。

那么这样做的正确方法是什么?


Fortify 为您提供两种方法来处理这种情况:1) 抑制问题,或 2) 隐藏问题。您选择哪个取决于您认为最适合您的方法。

被抑制的问题。如果您确定特定漏洞不是而且永远不会成为问题,则可以将问题标记为已抑制。您可能还希望抑制针对可能不是高优先级或不立即关注的特定类型问题的警告。例如,您可以抑制已修复的问题,或者根据您的情况,您不打算修复的问题。已抑制的问题不包含在问题面板中显示的组总数中。当您想完全消除对问题的认识时,这种方法可能是最好的。

隐藏的问题。您可以暂时隐藏一组问题,以避免在您专注于其他事情时分心。例如,您可以隐藏除分配给您的问题之外的所有问题。指定负责解决您隐藏在视图中的问题的人员仍然可以访问这些问题。问题面板中显示的组总数包括隐藏的问题。如果您在文件夹列表中发现想要隐藏或定向到另一个文件夹的问题,则可以使用过滤器向导创建新的过滤器。过滤器向导显示具有过滤器匹配条件的所有属性。文档 HP_Fortify_Audit_Workbench_User_Guide_4.30 的 P 29;该文档包含在您的 Fortify 程序文件中。如果您希望其他人知道这些问题,即使您忽略它,这种替代方案可能会更好。

已删除问题。这种替代方案与您的情况并不是特别相关,但我为了完整起见而提出它。随着时间的推移对项目运行多次扫描,问题通常会得到修复或变得过时。在合并扫描结果时,静态代码分析器会将先前扫描中发现但在最新 SCA 分析结果中不再明显的问题标记为“已删除”。已删除的问题不包含在问题面板中显示的组总数中。由于您不打算“修复”此问题,因此它不会成为“已删除的问题”。

要显示或隐藏抑制、隐藏和删除的问题,请使用“选项”菜单。可见性过滤器显示或隐藏问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

HP Fortify——注释方法参数 的相关文章

随机推荐