python 项目的强化扫描

Fortify scan for python project

为 python 个文件生成 Fortify 的热度。

一个类似的问题是 但它列出了 java 的步骤。

要为 python 项目生成报告,必须使用 --python-path。 我尝试了以下步骤,但没有成功。

第 1 步:清理、构建

sourceanalyzer -64 -Xms1024M -Xmx10000M -b -verbose -Dcom.fortify.sca.ProjectRoot=/local/proj/9999/ -Dcom.fortify.WorkingDirectory=/local/proj/9999/working -logfile  /local/proj/working/9999/working/sca.log  -clean

第 2 步:扫描:此步骤应生成 fpr 文件

sourceanalyzer -b 9999 -verbose -Xms1024M -Xmx10000M -Dcom.fortify.sca.ProjectRoot=/local/proj/9999/ -Dcom.fortify.WorkingDirectory=/local/proj/9999/working  -logfile /local/proj/9999/sca.log -python-path /path/to/python -f projec_999.fpr /local/proj/**/*.py

这没有生成任何 fpr 文件。 第二步发出警告:

[warning]: The -f option has no effect without the -scan option
[warning]: You may need to add some arguments to the -python-path argument to SCA.

我不确定我是否使用了正确的命令。

  1. 如何确保目录和子目录中的所有 python 个文件都被扫描?
  2. 是否有添加多个 python 路径的选项?

您做的第一步只做 Clean,不做构建步骤。

要为 Python 执行翻译步骤,您需要指定任何 Python 引用 (-python-path) 的目录以及要翻译的文件。

我也不确定您对 ProjectRoot 和 WorkingDirectory 做了什么,您知道这些用于存储 sourceanalyzer 的临时 data/intermediate 文件而不是源代码的位置,对吗?

类似

sourceanalyzer -b <buildId> -python-path <directories> <files to scan>'
  • <buildId> 可用于对不同的项目进行分组,当您执行 ProjectRootWorkingDirectory 时,您有点自己在做这个(我不确定您是否需要它们,不记得了,我也无法再进行测试了)
  • <directories> - 在这里您可以列出通常位于 PythonPath 环境变量中的目录(您可以在这里实际调用它并省去很多麻烦).这是 Windows 的逗号分隔列表和 Linux
  • 的冒号分隔列表
  • <files to scan> 这是您指定要 translate/scan 的文件的地方。您可以指定单个文件或使用通配符(***/* [递归])

示例命令如下所示:

sourceanalyzer -b MyApp -python-path %PYTHONPATH% ./MyApp/**/*

可以使用您输入的其他选项,它看起来像这样:

sourceanalyzer -b MyApp -Xms1024M -Xmx10G -logfile  /local/proj/working/9999/working/sca.log -python-path %PYTHONPATH% ./MyApp/**/*

在此步骤中,您将检查我们从您的程序中翻译了哪些文件:

sourceanalyzer -b MyApp -show-files

然后执行扫描命令

sourceanalyzer -b MyApp -logfile  /local/proj/working/9999/working/sca.log -scan -f project.fpr

您可以申请-python-path多次。这解决了使用哪个分隔符的问题。所需目录的列表可以通过 python:

获得
import sys
print(sys.path)