Samuel-DD07/secure-react-pipeline
GitHub: Samuel-DD07/secure-react-pipeline
一个集成SAST、SCA和密钥检测的React CI/CD流水线,在GitHub Actions中自动阻断含安全风险的构建。
Stars: 0 | Forks: 0
# 安全 React 流水线
一个完全自动化的安全流水线,直接集成到 GitHub Actions 中。
该项目展示了如何将自动化安全检查(SAST、SCA 和 Secrets 检测)嵌入到 React 开发工作流中,以便在漏洞进入生产环境之前捕获它们。
## 在线部署
* **开发环境(持续部署):** [https://secure-react-pipeline-dev.vercel.app](https://secure-react-pipeline-dev.vercel.app)
* **生产环境(手动触发):** [https://dorismond.fr](https://dorismond.fr) (也可通过 [https://samuel.dorismond.fr](https://samuel.dorismond.fr) 访问)
## 架构与工作流
以下是安全检查如何集成到开发生命周期中:
```
graph TD
A[Developer] -->|git push / PR| B(GitHub Repository)
B --> C{GitHub Actions}
C -->|Parallel Scan 1| D[Gitleaks: Secrets & API Keys]
C -->|Parallel Scan 2| E[Semgrep: Static Analysis SAST]
C -->|Parallel Scan 3| F[OWASP Dependency-Check: SCA]
D & E & F --> G{Critical Vulns Found?}
G -->|Yes| H[Break the Build & Block PR]
G -->|No| I[Build Successful & Deploy]
```
## 集成安全工具
每次推送和拉取请求都会自动触发以下扫描:
| 扫描器 | 类别 | 检查内容 | 范围 |
|---|---|---|---|
| **Semgrep** | **SAST**(静态应用程序安全测试) | JavaScript/TypeScript 中的漏洞模式(XSS、不安全的 DOM 插入、错误配置) | React 代码库 |
| **OWASP Dependency-Check** | **SCA**(软件成分分析) | 过时或不安全的包以及 npm 依赖项中的已知 CVE | `package.json` 和 `package-lock.json` |
| **Gitleaks** | **Secrets 检测** | 硬编码的 API 密钥、私钥、数据库凭据和令牌 | 完整 Git 历史记录和提交差异 |
## 关键 DevSecOps 功能
### 中断构建策略
安全只有在阻止不良代码交付时才有效。此流水线配置了严格的质量门禁:
* **Gitleaks**:如果检测到任何暴露的密钥,立即以非零退出码退出。
* **Semgrep**:如果触发了 `Error` 类别中的规则(例如 CSRF 缺陷、DOM-XSS),则运行失败。
* **SCA**:标记包含高或严重级别 CVE 的构建。
### 性能与缓存优化
缓慢的流水线会让开发者感到沮丧。此流水线针对速度进行了优化:
* **数据库缓存**:OWASP Dependency-Check CVE 数据库在运行之间通过 GitHub Actions 缓存进行缓存,将扫描时间从 10 分钟减少到 2 分钟以下。
* **增量扫描**:Gitleaks 仅扫描拉取请求的提交范围,防止在较大的仓库上扫描缓慢。
### 左移(本地 Git Hooks)
在安全问题到达远程仓库之前捕获它们:
* 使用 **Husky** 和 **lint-staged** 在提交之前对暂存文件本地运行 Gitleaks。
## 实际发现与修复
以下是在测试 React 应用程序上使用此流水线检测并修复的实际发现:
| 工具 | 发现内容 | 严重性 | 实际影响 | 修复措施 |
| :--- | :--- | :---: | :--- | :--- |
| **Gitleaks** | 硬编码的 Stripe API 密钥 | **严重** | 潜在的财务风险和未授权后端访问 | 撤销密钥,将凭据移至 GitHub Actions Secrets 或环境变量 |
| **Semgrep** | 不安全地使用 `dangerouslySetInnerHTML` | **高** | 通过用户输入注入导致跨站脚本(XSS) | 替换为安全的 JSX 渲染或使用 `dompurify` 进行清理 |
| **OWASP SCA** | `axios < 1.6.0` (CVE-2023-45857) | **高** | SSRF(服务端请求伪造)漏洞 | 运行 `npm install axios@latest` 以升级到修补版本 |
## 如何设置
### 1. 复制配置
将工作流配置文件复制到您的项目中:
```
cp .github/workflows/security.yml your-project/.github/workflows/
```
### 2. 配置 GitHub Secrets
将任何必要的令牌或环境变量添加到您的仓库中的 **Settings > Secrets and variables > Actions**。
由 [Samuel Dorismond](https://www.dorismond.fr) 构建 — 自由职业 DevSecOps 工程师和安全顾问
标签:DevSecOps, GitHub Actions, Gitleaks, OWASP Dependency-Check, React, SAST, Semgrep, Syscalls, WordPress安全扫描, 上游代理, 二进制发布, 前端安全, 安全, 安全扫描, 开源工具, 开源框架, 持续部署, 持续集成, 数据可视化, 时序注入, 盲注攻击, 秘密检测, 管道, 网络调试, 自动化, 自动笔记, 自定义脚本, 超时处理, 软件组成分析, 错误基检测, 静态代码分析