ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

5分钟用Semgrep静态代码分析找出硬编码密钥:新手快速上手指南

5分钟用Semgrep静态代码分析找出硬编码密钥:新手快速上手指南 5分钟用Semgrep静态代码分析找出硬编码密钥新手快速上手指南【免费下载链接】semgrepLightweight static analysis for many languages. Find bug variants with patterns that look like source code.项目地址: https://gitcode.com/GitHub_Trending/se/semgrep半夜最怕的两种事有人在代码里明文塞了 AK 密钥Code Review 上第十次被人问这个 except 为什么敢裸写。这两类问题人眼很难盯全但它们有固定的形状。Semgrep 是一个支持多种语言的静态代码分析工具你写一个长得像源代码的模式它就能把整个仓库扫一遍把命中的文件和行号全报给你。 3 条命令看到第一条扫描输出不用配环境、不用写配置文件克隆仓库、装好、扫起来git clone https://gitcode.com/GitHub_Trending/se/semgrep cd semgrep pip install -e . semgrep scan --config auto跑完立刻有反馈它先告诉你扫了几种语言、多少条规则覆盖多少文件然后 Findings 区块逐条列出规则 ID、文件、行号还附上命中那行的代码片段。第一次拿它扫自己的项目那种有人替你盯着的感觉很上瘾。--config auto会自动拉取与项目语言匹配的官方规则注册表开箱就有几十条安全规则。网络不稳时直接用--config指向一个本地规则文件也一样。 手写一条规则抓一次硬编码密钥官方规则只是开胃菜真正值钱的是自己团队的问题。以密钥写死在代码里为例一行secret ...的模式就能匹配 Python 里所有同名变量的字符串赋值。把这几行存成 yml 文件就能用rules: - id: hardcoded-secret languages: [python] pattern: secret ... message: 密钥不要写死在源码里再跑一次semgrep scan --config your-rule.yml命中处会带着你写的 message 一起出现在终端里。看到命中之时值得停下来问一句这行当初为什么这么写模式里的...占位符相当于通配print(...)匹配任意 print 调用open(...)匹配任意 open 调用。吃透这一个符号规则编写就完成了一半。把规则长进自己项目里把反复出现的 review 意见沉淀成规则、提交进仓库是这套玩法的关键动作。规则文件就是普通 YAML每条规则给 id、languages、pattern、message、severity 几个字段放到项目里一个目录比如rules/再用--config rules/引用即可。规则进了 git谁写代码谁被同一套规则扫review 意见就从人脑里搬成了可执行资产。想抄现成写法perf/r2c-rules/ 下有 Python、JavaScript、Go 各语言的现成安全规则可以对着改。 几行 CI 配置让它替你值夜班手动扫总归靠记得挂到 pre-commit 或 CI 上才是真值班。GitHub Actions 只需一小段- name: Semgrep check uses: returntocorp/semgrep-actionv1 with: config: $SEMGREP_RULESGitLab、Jenkins、Bitbucket 思路完全一样构建容器里装好 semgrep 二进制加一个跑semgrep scan --config ...的步骤。命中就红密钥连主干都进不去。三个常踩的坑 延伸入口大仓库先瘦身用--exclude排除第三方依赖、构建产物和生成代码否则又慢又吵。规则堆多反而慢别一次上全量规则库--config指定小子集先跑再按需加。输出太多等于没有加--severity过滤等级先看高危低危的攒着批量处理。延伸入口两个规则字段的完整格式定义在 interfaces/rule_schema_v2.atd拿来做性能对照用的规则集在 perf/rules/。打开终端把上面那三条命令敲一遍。【免费下载链接】semgrepLightweight static analysis for many languages. Find bug variants with patterns that look like source code.项目地址: https://gitcode.com/GitHub_Trending/se/semgrep创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表