mcpField
S
secure-coding

secure-coding

github.com/securityreviewai安全2103 次安装28 周前更新
代码仓库

关于 secure-coding

secure-coding 是面向开发者和代码审查者的安全编码技能,提供多种语言、Web 框架及 Terraform 的针对性参考。它引导按技术栈选择指南,并将安全建议应用于具体改动或审查发现。

主要功能

  1. 01覆盖多种语言与 Web 框架
  2. 02按技术栈加载对应安全指南
  3. 03提供常见漏洞与安全模式参考
  4. 04通过审查清单检查代码改动
  5. 05为未覆盖技术栈说明类比依据

适用场景

  1. 01审查 Web 端点的输入与授权处理
  2. 02为框架代码选择安全实现模式
  3. 03检查文件上传、序列化或秘密配置风险
  4. 04审计 Terraform 基础设施配置

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/securityreviewai/secure-coding-skill --skill secure-coding

安装后在 Claude Code 中输入/secure-coding确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
angular.md
aspnet.md
c.md
cpp.md
csharp.md
go.md
java-spring.md
python-django.md
python-fastapi.md
python-flask.md
react.md
ruby-on-rails.md
terraform.md
typescript.md
vue.md

详细介绍

安全编码

这是一项用于在常见 Web 框架中编写和审查安全代码的技能。每个框架都有惯用的安全模式和典型陷阱;通用的 OWASP 建议并不足够——应采用针对框架的指导。

适用场景

在使用以下任一语言或框架时,触发此技能:

参考文件语言 / 框架
references/java-spring.mdJava Spring / Spring Boot
references/python-django.mdPython Django
references/python-flask.mdPython Flask
references/python-fastapi.mdPython FastAPI
references/ruby-on-rails.mdRuby on Rails
references/react.mdReact(包括 Next.js)
references/vue.mdVue(包括 Nuxt)
references/angular.mdAngular
references/go.mdGo(net/http、Gin、Echo、Fiber、Chi)
references/aspnet.mdASP.NET(Core、MVC、Web API、Razor、Blazor)
references/c.mdC(C99–C23、系统 / 嵌入式 / 内核相关)
references/cpp.mdC++(C++17/20/23)
references/typescript.mdTypeScript(Node/Express/NestJS/Fastify/Deno/Bun + 共享前端)
references/csharp.mdC# 语言(非 Web 场景——控制台、服务、桌面应用、库)
references/terraform.mdTerraform / OpenTofu(AWS、Azure、GCP IaC)

工作流

  1. 确定涉及的语言 / 框架。 查看 package.json、tsconfig.json、pom.xml、build.gradle、requirements.txt、Pipfile、pyproject.toml、Gemfile、go.mod、*.csproj、*.sln、Makefile/CMakeLists.txt、*.tf/*.tfvars,或当前文件中的导入和扩展名。如果涉及多种技术(例如,使用 Django 后端、通过 Terraform 部署的 React+TypeScript 前端),则加载每个相关参考文件。
  2. 仅加载相关的参考文件。 每个参考文件都是独立的,涵盖该框架最常见的安全陷阱和惯用安全模式。
  3. 将指导应用于具体改动。 不要把完整清单一股脑贴进 PR——只关注改动实际涉及的类别(例如,新增一个接受 JSON 的端点:输入验证、身份验证 / 授权、输出编码;新增文件上传:存储路径、内容类型、大小限制)。
  4. 审查代码时,按照参考文件中的“审查清单”逐行检查改动,并指出具体问题及其文件:行号,同时给出建议的修复方案。
  5. 编写新代码时,优先采用参考文件中的“安全模式”代码片段,而不是自行发明写法。

每个参考涵盖的内容

Web 框架参考(Spring、Django、Flask、FastAPI、Rails、React、Vue、Angular、Go、ASP.NET)均围绕相同类别编排:

  • 注入 — SQL、NoSQL、命令、LDAP、模板、标头注入
  • 身份验证 / 权限控制 — 登录流程、会话 / Cookie 配置、密码存储、角色检查、IDOR
  • CSRF — 适用场景、框架默认设置,以及意外禁用防护的常见方式
  • XSS / 输出编码 — 自动转义默认设置,以及如何安全或危险地绕过转义
  • CORS — 限制性默认设置、常见错误配置
  • 密钥与配置 — 密钥应存放和不应存放的位置、框架特定的配置陷阱
  • 加密 — 框架提供的功能,以及应避免自行实现的内容
  • 文件上传与路径遍历 — 安全存储、内容类型处理、文件名净化
  • 反序列化 — 安全解析器、危险格式(Pickle、Marshal、BinaryFormatter、ObjectInputStream、YAML.load)
  • SSRF — 出站 HTTP 调用、URL 抓取器、Webhook
  • 安全标头 — CSP、HSTS、X-Frame-Options、Referrer-Policy、框架特定的辅助工具
  • 日志记录与错误处理 — 应记录的内容、不应记录的内容(PII、密钥、令牌)、堆栈跟踪泄露
  • 依赖项 — 已知存在问题的版本、安全公告数据库链接、升级路径
  • 框架特定的易错点 — 即使经验丰富的开发者也容易中招的问题

语言参考重点关注超越框架范畴的问题:

  • C / C++ — 内存安全(缓冲区 / 堆溢出、UAF、重复释放)、整数溢出 / 下溢、格式字符串、字符串 / 路径 API、TOCTOU、通过 system/exec 实现的命令注入、加密库使用、编译器加固(-D_FORTIFY_SOURCE、栈保护、ASAN/UBSAN/模糊测试)
  • TypeScript — 类型安全仅在编译时有效,在信任边界处进行运行时验证(Zod/Valibot/class-validator)、严格的 tsconfig.json、any 与 unknown 的区别、Node 特定主题(Express/NestJS/Fastify 中间件、原型污染、eval/vm/Function(str)、供应链)
  • C#(非 Web) — Process.Start 参数处理、加密 API 使用(RNG、哈希、AEAD)、序列化风险(BinaryFormatter、Newtonsoft.Json TypeNameHandling)、XML 实体加固、清除密钥、HttpClient TLS、反射 / CSharpScript RCE 攻击面、ReDoS
  • Terraform — .tf / 状态文件中的密钥、公共资源错误配置(S3、安全组、防火墙)、IAM 通配符和信任策略 Condition 块、静态 / 传输加密默认设置、模块 / 提供程序固定版本、危险的配置器、CI 中的策略即代码(tfsec、checkov、trivy config)

如何使用这些参考

  • 对于专项任务(例如,“审查此登录控制器”),加载一个参考并搜索相关章节。
  • 对于全面审查(例如,“审计此 Spring Boot 服务”),加载该参考,并按照末尾的完整检查清单逐项检查。
  • 对于多技术栈应用(例如,React + FastAPI),同时加载两个参考——前端和后端的安全问题很少完全重合(CSRF、CORS 和身份验证令牌存储都处于两者交界处)。

审查结果的格式

审查代码时,按以下格式组织发现:

[Severity] <Category> — <file>:<line>
What: <one-sentence description of the issue>
Why it matters: <concrete impact>
Fix: <minimal code change or pattern reference from the framework guide>

严重性级别:严重(RCE、绕过身份验证、大规模数据泄露)/ 高(权限提升、IDOR、存储型 XSS)/ 中(反射型 XSS、状态变更时的 CSRF、信息泄露)/ 低(缺少纵深防御、加固不足)。

不要用通过检查的项目凑报告篇幅——只列出错误、缺失项以及应采取的措施。

当语言/框架不在列表中时

如果用户使用的语言或框架未涵盖在列表中(例如 Rust、Kotlin、Phoenix、Laravel、NestJS、Pulumi、CloudFormation),请套用最接近的类比,并明确告知用户这是推断,以便他们核实框架特定的行为。大致类比如下:

  • Rust ≈ C/C++(适用于不安全代码块/FFI);其他情况下默认内存安全——重点关注 unsafe、加密 crate 的使用(RustCrypto / ring)以及 Web 框架的具体情况(Axum/Actix)。
  • Kotlin (JVM) ≈ Spring Boot / Ktor 对应的 java-spring.md;存在与 Java 相同的加密和序列化陷阱。
  • NestJS ≈ 语言层对应的 typescript.md + angular.md 风格的 DI/装饰器模式。
  • Phoenix (Elixir) ≈ ruby-on-rails.md——默认设置类似(CSRF 保护、参数绑定),但习惯用法不同。
  • Laravel (PHP) ≈ ruby-on-rails.md——MVC 模式和约定优于配置的安全默认设置较为相似。
  • Pulumi / CloudFormation / Bicep ≈ terraform.md——IaC 方面的关注点相同(机密、状态、公有资源、IAM)。

评论

支持 Markdown