news 2026/9/10 10:03:54

Semgrep完整指南:5分钟代码扫描找出代码漏洞

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Semgrep完整指南:5分钟代码扫描找出代码漏洞

Semgrep完整指南:5分钟代码扫描找出代码漏洞

【免费下载链接】semgrepLightweight static analysis for many languages. Find bug variants with patterns that look like source code.项目地址: https://gitcode.com/GitHub_Trending/se/semgrep

代码写到一定规模,bug 和安全问题就藏在最普通的几行里:a == a这种自比较、生产代码里遗留的print()调用、用 http 而不是 https 启动的服务。Semgrep是一个静态分析工具,它的方式比较特别:用看起来像源代码的模式去扫描你的项目,覆盖 30 多种语言,而且全程本地运行,代码不会离开你的机器。

下面带你花几分钟装好 Semgrep,跑通第一次安全扫描,再写出第一条自定义规则。

5分钟装好:安装并跑通第一条扫描命令

安装很简单,用 pip 就行:

python3 -m pip install semgrep

装完就有semgrep命令了。进入项目目录,直接跑自动配置扫描:

semgrep scan --config auto .

--config auto会根据项目里检测到的语言,自动从官方注册表挑一套合适的规则,不需要你手工配置。跑完得到的是一份发现清单:文件名、行号、规则说明、修复建议都有:

只想查一个小点的时候,用-e一行直接跑模式,不用写规则文件。下面这条找 Python 里的a == a自比较 bug:

semgrep -e '$X == $X' --lang=py src/

$X是元变量,匹配任意表达式。没有规则文件、没有配置,一条命令出结果——这就是 semgrep 怎么用最直接的答案。

看懂 Semgrep 模式,写出自己的规则

普通 grep 只能匹配精确字符串。Semgrep 理解代码语义:搜数字 2,它连x = 1; y = x + 1也能匹配上。

所以规则可以写得跟源码很像。比如想在 Python 里禁用print()调用:

rules: - id: python-no-prints-in-prod languages: [python] # 对 Python 文件生效 pattern: print(...) # ... 表示任意参数 message: "Use logging.debug() instead of print()" severity: INFO

五个字段就是一条能用的规则。print(...)匹配任何带任意参数的 print 调用,不需要理解抽象语法树,也不用学新的查询语言——会写代码就会写规则。

常见用法不止安全:禁止危险 API、强制项目编码规范、替换废弃 API,甚至自动改写代码(autofix)。想多看点模式写法,tests/patterns/ 里有大量测试用例,各种语言的模式语法都能翻到。

接入 CI:只报 PR 引入的增量问题

手动跑几次之后,下一步是把它放进流程。

CI是让团队无痛用起来的办法:在构建流水线里跑semgrep ci,它只报告当前 pull request 引入的问题,历史存量不拦路,开发同学能马上接受。平台侧对 GitHub Actions、GitLab CI、Jenkins、CircleCI 这些常见 CI 服务都提供了现成的集成入口:

更轻量的做法也有:

  • pre-commit 钩子:每次提交后扫一遍,问题不出本地。
  • IDE / MCP 集成:跑semgrep mcp启动本地 MCP 服务,AI 编码助手就能在你写代码时直接触发扫描,实现在 cli/src/semgrep/mcp/。

它适合谁

  • 个人开发者:本地扫描 + 一行式模式查询,零成本。
  • 团队负责人:接入 CI,把编码规范和安全红线变成硬约束。
  • 安全工程师:沉淀内部规则库,做全项目代码审计。

要说明一个边界:开源社区版在单个函数、单个文件内做分析,跨文件、跨函数的数据流分析需要商业平台。引擎本体是 OCaml 写的,核心逻辑在 src/osemgrep/,规则结构定义在 interfaces/rule_schema_v2.atd——想给项目加新语言或新规则能力,从这两个路径读起。

现在就动手

今晚就在你的项目里装上 Semgrep,跑一次semgrep scan --config auto .。得到的报告未必完美,但它比任何教程都值。

【免费下载链接】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),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/10 10:02:08

三微网互联低碳经济调度建模与Matlab求解实战

多微网能量互联这个话题,我之前跟不少做园区综合能源的朋友聊过,大家的第一反应往往都是“多个微网一起调度,不就是把单微网的模型复制三份再拼接起来吗”。真上手做你就会发现,完全不是那么回事。微网之间的功率交互、碳排放配额…

作者头像 李华
网站建设 2026/9/10 10:01:16

OpenClaw+CloudBase:AI智能体自动建站与部署全流程实战

去年下半年开始,我基本把自己手上大部分建站需求从“写代码再手动传服务器”切到了 AI 智能体自动完成的路线上。这里说的不是套个模板那么简单,而是让 AI 真正参与策划、生成、部署、更新整个链路。作为腾讯云代理商,我经手过不少客户的网站…

作者头像 李华
网站建设 2026/9/10 10:01:06

MTProxy配置文件详解:proxy-secret与proxy-multi.conf深度解析

MTProxy配置文件详解:proxy-secret与proxy-multi.conf深度解析 MTProxy是一款高效的代理工具,其配置文件是实现安全通信和多实例管理的核心。本文将深入解析MTProxy中两个关键配置文件——proxy-secret和proxy-multi.conf,帮助新手用户快速掌…

作者头像 李华