我有一个关于使用强化代码注解的名称和语法的问题。
简短,简短,非常简短的版本是:我正在寻找一个指南/手册,其中将列出可用的代码注解,并为它们的预期用途提供一个示例。专门用于从强化扫描结果中省略一组“sql注入”和“sql注入:持久性”问题。
热释光;博士;细节:
强化版本:19.1.0
平台:Java8;web应用程序(weblogic 12.2.1.4.0(12c));redhat unix公司
强化问题:sql注入(wasc-19)
附加信息:代码作为web应用程序的一部分存在。
“可疑”输入字符串从客户机到达,然后成为ddl语句(“alter session…”)的一部分,这个“不能更改”,ddl语句不能参数化。
清理输入字符串非常容易。(7个字符)字符串通过regex解析器提供: Pattern.compile(HARDCODED_REGEX_CONSTANT).matcher(suspectString);
使用带注解的方法声明,通过regex解析器发送输入也是验证的一部分。 @Pattern(regexp=HARDCODED_REGEX_CONSTANT)
这两种方法都不足以加固。
此外,可疑输入字符串还根据已知的有效值进行验证(这些值是从数据库中提取的,因此fortify还发现这些值也是“可疑的”)。
当然,这些都不能满足强化扫描的要求。
由于“原因”,创建和存储一个在代码外部并应用于扫描结果的自定义规则是“行不通的”[我不能充分或简要地解释为什么这个简单的解决方案被拒绝。]只需说,创建一组“假阳性”在强化扫描之前导入;是“非选项”,也不是将“已知问题”标记为“非问题”。
在代码中放置“ignorethis”注解也不满足目标状态。最后的评价是,这个问题仍然存在于扫描结果中,很关键,因此必须解决。
重述请求:我想在代码结构中放置一个注解(或其他注解)(例如@fortfyvalidate, @Fortify?????
,等)在强化扫描标记问题的点。
我在网上找不到合适的指南/手册来列出可用的代码注解,并为它们的预期用途提供一个示例。专门用于从强化扫描结果中省略一组“sql注入”和“sql注入:持久性”问题。
谢谢您
1条答案
按热度按时间zour9fqk1#
尽我所能回答我自己的问题。
我得到的答案是使用强化注解。然而,这并不是解决强化问题的首选方法。首选的识别、缓解和解决方法是通过审计工作台和强化软件安全中心,该中心集成到支持的测试和qa过程中。MicroFocus概述了如何对此过程进行建模。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。确保使用当前的强化版本。其次,fortify19.1.0中有两个jar文件包含注解定义。他们是
FortifyAnnotations-CLASS.jar
以及FortifyAnnotations-SOURCE.jar
. 我选择了重新命名-CLASS.jar
使用它而不是混乱的构建过程。一旦导入或添加到类路径;使用注解删除特定的“污点”很简单
@FortifyXSSValidate
或广义综合验证@FortifyValidate
.当使用自定义代码来确保有效性时,使用
@FortifyValidate("return")
注解。我建议使用尽可能简洁的注解,以防止fortify标记缓解的问题。我还建议放置一些内联注解或文档,这些注解或文档详细描述了放置注解的原因,以及如何使其放置成为可行的解决方案。