我已在 GitLab CI(GitLab 社区版)14.5.2 中启用了 SAST 扫描。SAST 运行 semgrep 和 ESLint 等工具,在源代码上运行并扫描漏洞。这是有效的......除了它没有从我告诉它的结果中排除路径和文件,所以我的报告充满了来自第 3 方库的垃圾。
\n由于我不想在报告中包含测试代码或第 3 方内容,因此我使用 GitLab 提供的变量来实现此目的,称为SAST_EXCLUDED_PATHS我用来排除某些目录的变量。我的价值观是这样的:
variables:\n SAST_EXCLUDED_PATHS: spec, test, tests, tmp, server/libs, assets, vendor, *.min.js\nRun Code Online (Sandbox Code Playgroud)\n所以基本上除了默认路径之外,我还告诉它不要扫描server/libs、assets或vendor。*.min.js
因此,简化的 .gitlab-ci.yml 添加了该步骤,添加了排除项并设置SECURE_LOG_LEVEL为"debug"。后者让我可以看到 sast-semgrep 等阶段的调试输出。
include:\n - template: Security/SAST.gitlab-ci.yml\n\nstages:\n - test\n\n# Run a SAST scan & report on the sources\nsast:\n stage: test\n variables:\n SAST_EXCLUDED_PATHS: spec, test, tests, tmp, server/libs, assets, vendor, *.min.js\n …Run Code Online (Sandbox Code Playgroud) 当我运行扫描时,结果会打印在 CLI 上。我如何查看或存储这些结果?我可以使用管道 (|) 或输出重定向 (>) - 但是是否有 semgrep-y 或格式化方法来保存这些结果?
我正在努力将环境变量使用到预提交挂钩配置的参数部分
以下是一个示例 spinet 来展示我正在尝试做的事情
- repo: https://github.com/returntocorp/semgrep
rev: "v0.1.2"
hooks:
- id: semgrep
name: semgrep my_custom_rule
args:
[
"--config",
"https://PRIVATE-TOKEN:{$TOKEN}@gitlab.com/api/proj/packages/test-rule.yml",
"--error",
]
Run Code Online (Sandbox Code Playgroud)
我已经将 TOKEN 的值设置到环境变量中。但仍在处理中,URL 被视为 https://PRIVATE-TOKEN:{$TOKEN}@gitlab.com/api/proj/packages/test-rule.yml 而不是实际的令牌值。出于安全原因,我想避免将实际令牌放入配置中。
我将如何继续让 Semgrep 检查我的代码库是否从错误的位置导入函数?例如在我的 django 项目中:
from gettext import gettext但我们确实应该这样做from django.utils.translation import gettext
关于如何使用 semgrep 实现这一目标有什么想法吗?