当前位置: 首页 > 知识库问答 >
问题:

如何在Java代码中使用强化注释?

濮阳钟展
2023-03-14

关于使用强化代码注释的名称和语法,我有一个问题。

简短、简短、非常简短的版本是:我正在寻找一个指南/手册,它将列出可用的代码内注释,并为它们的预期用途提供一个示例。专门用于从Fortify扫描结果中省略一组“SQL注入”和“SQL注入:持久性”问题。

TL;博士;细节:

  • 强化版:19.1.0
  • 平台:Java 8;Web App(Weblogic 12.2.1.4.0(12c));Redhat Unix
  • 强化问题:SQL注入(WASC-19)
  • 附加信息:代码作为web应用程序的一部分存在

“可疑”输入字符串从客户端到达,然后成为DDL语句的一部分(“ALTER SESSION...”)这“无法更改”并且DDL语句无法参数化。

净化输入字符串非常容易。(7个字符)字符串通过正则表达式解析器提供:Pattern.compile(HARDCODED_REGEX_CONSTANT). matcher(SusectString);

使用通过正则表达式解析器发送输入的带注释的方法声明也是验证的一部分,例如@模式(regexp=HARDCODED\u regex\u常量

这两种方法都不足以加固。

此外,可疑输入字符串还根据已知和有效值进行验证(这些值是从数据库中提取的,因此Fortify还发现这些值也是“可疑的”)。

当然,这些都不能满足强化扫描的要求。

由于“原因”,创建和存储代码外部并应用于扫描结果的自定义规则“行不通”。[我无法充分或简要地解释为什么这个简单的解决方案被拒绝。]可以说,在强化扫描之前创建一组“误报”导入;不是“选项”,也不是将“已知问题”标记为“非问题”。

在代码中放置“忽略此”注释也不满足目标状态。最终评估是问题仍然存在于扫描结果中,这是关键的,因此必须解决。

重申请求:我想在Fortify扫描标记问题的点上放置注释(或其他代码内构造)(例如@FortifyValidate、@Fortify?????等)。

我在网上找不到足够的指南/手册来列出可用的代码内注释并为它们的预期用途提供示例。专门用于从Fortify扫描结果中省略一组“SQL注入”和“SQL注入:持久性”问题。

非常感谢。

共有1个答案

华温书
2023-03-14

尽我所能回答我自己的问题。

我得到的答案是使用Fortify注释。然而,这不是“应该”解决Fortify问题的首选方法。识别、缓解和解决的首选方法是通过集成到受支持的测试和质量保证流程中的审计工作台和Fortify软件安全中心。Micro Focus概述了如何对该流程进行建模。https://www.microfocus.com/documentation/fortify-static-code-analyzer-and-tools/1810/AWB_Guide_18.10.pdf

那种类型的开发环境对我来说不可用。

那么,关于黑客:

我在网上找到的唯一一个留档是:https://community.microfocus.com/t5/Fortify-User-Discussions/Using-Fortify-Java-Annotations/td-p/1500577它有一些拼写错误,但是对于将Fortify注释库集成到现有的maven项目中,然后将注释放入代码中是准确和有用的。

注意事项:该页面来自2014年,引用的强化版本为4.00。请确保使用当前的强化版本。其次,Fortify 19.1.0中有2个jar文件包含注释定义。它们是FortifyAnnotations类。jar和FortifyAnnotations SOURCE.jar。我选择重命名这个类。jar,并使用它,而不是混乱的构建过程。

一旦导入或添加到类路径;使用注释来删除特定的“污点”或通用的一揽子验证是一件简单的事情。

当使用自定义代码来确保有效性时,使用FortifyValidate(“return”)注释非常有用。

我建议使用尽可能简洁的注释,以防止Fortify标记缓解的问题。我还建议放置一些内联注释或文档,彻底描述放置注释的原因以及如何使其放置成为可行的解决方案。

 类似资料:
  • 我想使用ArchUnit来强制使用SLF4J日志框架,避免使用简单的系统。out调用。此外,我希望避免使用任何其他日志框架。我该如何实施此类检查? 目前我写了这个测试 但它实际上并没有强制SLF4J的使用,只是限制的使用,并防止依赖于类(实际上常量所在的位置)。 是否是我的案例更优雅的解决方案?

  • 问题内容: 是否可以注释代码块?例如循环还是大括号?如果是这样,怎么办? 第一.java ForCycle.java 根据http://www.javacodegeeks.com/2012/11/java-annotations-tutorial-with-custom- annotation.html @Target –指示注释类型适用的程序元素的种类。一些可能的值是TYPE,METHOD,CO

  • 本文向大家介绍如何在JavaScript中谨慎使用代码注释,包括了如何在JavaScript中谨慎使用代码注释的使用技巧和注意事项,需要的朋友参考一下 前言 最令程序员头痛的事情莫过于阅读别人的代码,但其实时间一久阅读自己的代码也会很痛苦。 问题不是出在『自己或别人』,而是在代码本身。 必要的注释可以阐明实现细节和设计意图,以此节约自己和别人的时间。 然而很多时候注释起的作用却适得其反,比如自动生

  • 问题内容: 我需要编写一个代码来比较Java 和Scala的性能。我很难在我的Java代码中使用Scala 。有人可以发布一个真正简单的“ hello world”示例,该示例如何使用Java代码(在文件中)创建Scala 并在其中添加100个随机数吗? PS:我非常擅长Java,但从未使用过Scala。 问题答案: 与其他方式相比,在Scala中使用Java集合要容易得多,但是由于您提出了以下要

  • 问题内容: 在Java代码的标签中使用break语句时出现错误。这正在显示。编写这样的代码是错误的。请协助我正确使用它。提前致谢。 问题答案: 带标签的A 与声明不同。Java没有声明。 标签标记了其后的语句。您可以使用它来突破该语句,并且只能脱离该语句。流的控制权将始终转移到标记语句的末尾。 那你这里有什么? 由于if后的分号,实际上这是整个标记的语句。因此,您根本不在其范围内。如果您没有该分号

  • 问题内容: 基本上,我想做两件事: 我想知道是否可以使用Java代码运行Java代码。 如果可能的话,如何在屏幕上显示输出?(无论是常规输出还是错误或异常) 我知道这是可能的,因为我的一位前辈已经做到了,但是我不知道他是如何做到的。也许他使用了Java的内置类之一。 注意:用户将代码写入一些文本文件中,然后将文件内容存储在某个变量中,然后也许运行该代码。 问题答案: 是的,有可能。 步骤1:编译代