我正在尝试将Fortify源代码分析器用于我学校的一个研究项目,以测试开源Java Web应用程序的安全性。我目前正在研究Apache Lenya。我正在使用上一个稳定版本(Lenya v2.0.2)。
在根目录中有一个名为 build.sh
的文件。使用随发行版附带的Ant版本(在tools/bin
文件夹中)调用此文件来构建Lenya。当我跑./build.sh
时,我可以建立Lenya。因此,可以假设在Fortify中运行以下命令可以起作用:
sourceanalyzer -b lenya -Xmx1200M touchless ./build.sh
然而,当我尝试并运行时:
sourceanayzer -b lenya -Xmx1200M -scan -f lenya.fpr
我明白了:
建立身份Lenya找不到。
我查看了 buid.sh 文件,发现它只是重置当前的ant home,classpath和ant选项变量,运行ant build命令,并将值重置回他们的默认值。所以我手动重置所有变量(没有脚本),而不是运行脚本并运行:
sourceanalyzer -b lenya -Xmx1200M touchless tools/bin/ant -logger org.apache.tools.ant.NoBannerLogger
然后我跑了:
sourceanalyzer -b lenya -Xmx1200M -scan -f lenya.fpr
但我得到了同样的错误。我不确定这是因为我做错了什么,还是Fortify没有正确做的事情。任何见解都会很棒。
答案 0 :(得分:2)
我不确定您是否可以访问Fortify文档,但这肯定会有所帮助。您应该参考SCA用户指南了解如何使用sourceanalyzer可执行文件。
简而言之,有两种获取FPR文件的方法:
我更喜欢前者,因为它在处理大型代码库时具有可自定义性。
PS:这是哪个版本的Fortify?
答案 1 :(得分:1)
不要使用非接触式命令,即用于C / C ++集成。由于Lenya是用Java编写的,因此最好使用其他命令。试试这个第一个翻译步骤(从你的基础lenya目录开始):
sourceanalyzer -b lenya -Xmx1200M -source 1.5 -cp "**/*.jar" "**/*"
答案 2 :(得分:0)
您实际使用的命令可以与Java版本一起使用,但它有一些限制。使用非接触式构建包装器创建了许多编译器包装器,例如对于javac,并将包装器放在PATH环境变量的前面。
如果你的build.sh脚本包含对javac的完全限定引用,例如/ usr / java / bin / javac,那么非接触式构建集成将不起作用。
user233276的说明是最广泛有用的。如果您想尝试Fortify SCA构建集成,我建议该技术将修改build.sh(请参阅http://svn.apache.org/viewvc/lenya/trunk/build.sh?view=markup&pathrev=400414)并更改第43行:
"$ANT_HOME/bin/ant" -logger org.apache.tools.ant.NoBannerLogger -emacs $@
为:
sourceanalyzer -b Lenya "$ANT_HOME/bin/ant" -logger org.apache.tools.ant.NoBannerLogger -emacs $@
有关三种类型的ant集成,请参阅“Fortify SCA用户指南”:
覆盖build.compiler属性:
ant -lib sourceanalyzer.jar {Fortify ant options} {ant options}
上述内容的快捷方式:
sourceanalyzer -b {Fortify options} ant {ant options}
或者,如果您创建自定义build.xml,如附录所示:
ant -lib sourceanalyzer.jar {ant options}