我试图使用Fortify的源代码分析器的一个研究项目,在我的学校来测试开源Java Web应用程序的安全性。 我目前的工作在Apache Lenya的。 我用最后的稳定版本(V2.0.2 Lenya的)工作。
根目录里面有一个文件名为build.sh
。 此文件被称为建立Lenya的使用Ant的版本附带的版本(在tools/bin
文件夹)。 我可以建立Lenya的就好了,当我运行./build.sh
。 因此,这将是假设在Fortify的运行以下命令将工作:
sourceanalyzer -b lenya -Xmx1200M touchless ./build.sh
然而,当我尝试运行:
sourceanayzer -b lenya -Xmx1200M -scan -f lenya.fpr
我得到:
建立ID Lenya的没有发现。
我看着buid.sh文件,发现它只是重置当前蚂蚁的家,类路径和Ant是选项的变量,运行Ant构建命令,重置值恢复为默认值。 所以我重置所有的变量手动(无脚本),而不是运行脚本并运行:
sourceanalyzer -b lenya -Xmx1200M touchless tools/bin/ant -logger org.apache.tools.ant.NoBannerLogger
然后我跑:
sourceanalyzer -b lenya -Xmx1200M -scan -f lenya.fpr
但我得到了同样的错误。 我不知道这是因为我做错了什么,或者如果它是什么,Fortify的不正确的练习。 任何有识之士将是巨大的。
我不知道您是否有访问Fortify的文件,但肯定会有所帮助。 你应该参考SCA用户指南,了解如何使用sourceanalyzer可执行文件。
切东西短,也有获得FPR文件的方法有两种:
- (长路)写一个脚本翻译,并通过提供源代码的路径和类路径的sourceanalyzer可执行分析的源代码。
- (短路)使用SCACompiler,而不是作为的javac编译器。 你需要修改生成脚本这一点。
我更喜欢前者,因为它可定制处理大型代码库的时候。
PS:哪个版本的Fortify的是这个?
不要使用非接触的命令,这是C / C ++集成。 由于Lenya的是用Java编写的,你与其他命令更好。 试试这个你的第一个转换步骤(从你的基地Lenya的目录运行):
sourceanalyzer -b lenya -Xmx1200M -source 1.5 -cp "**/*.jar" "**/*"
你实际使用可以与Java的工作命令构建,除了它有一定的局限性。 使用非接触式生成包装创建一些编译器的包装,例如用于javac的,并提出了在包装PATH环境变量的前面。
如果您build.sh脚本包含javac的完全限定引用,例如在/ usr / JAVA /斌/ 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 $@
见Fortify的SCA用户指南三种类型的蚂蚁集成:
覆盖build.compiler属性:
蚂蚁-lib sourceanalyzer.jar {Fortify的蚂蚁选项} {蚂蚁选项}
快捷方式上面:
sourceanalyzer -b {Fortify的选项} {蚂蚁蚂蚁选项}
或者,如果你犯了一个自定义的build.xml如附录中:
蚂蚁-lib sourceanalyzer.jar {蚂蚁选项}