JaydeepGadhiya/laravel-guarddog

GitHub: JaydeepGadhiya/laravel-guarddog

Laravel GuardDog 是一款轻量级的安全扫描器,专门检测 Laravel 应用中的常见漏洞并生成 HTML 报告,以提升开发安全性。

Stars: 7 | Forks: 0

# 🐕 Laravel GuardDog ### 一款用于 Laravel 的安全扫描器,可发现漏洞并生成精美的 HTML 报告。 [![CI](https://github.com/JaydeepGadhiya/laravel-guarddog/actions/workflows/ci.yml/badge.svg)](https://github.com/JaydeepGadhiya/laravel-guarddog/actions) [![Packagist 最新版本](https://img.shields.io/packagist/v/jaydeep/laravel-guarddog.svg?style=flat-square)](https://packagist.org/packages/jaydeep/laravel-guarddog) [![总下载量](https://img.shields.io/packagist/dt/jaydeep/laravel-guarddog.svg?style=flat-square)](https://packagist.org/packages/jaydeep/laravel-guarddog) [![许可证](https://img.shields.io/packagist/l/jaydeep/laravel-guarddog.svg?style=flat-square)](LICENSE.md) [![GitHub Stars](https://img.shields.io/github/stars/JaydeepGadhiya/laravel-guarddog?style=flat-square)](https://github.com/JaydeepGadhiya/laravel-guarddog/stargazers) **在几秒钟内扫描你的 Laravel 应用。在进入生产环境之前,捕获 SQL 注入、缺失的认证中间件、暴露的密钥等问题。** [快速开始](#-quick-start) • [功能](#-features) • [报告示例](#-example-report) • [配置](#-configuration) • [常见问题](#-faq)
## 🚀 为什么选择 GuardDog? 要发布一个安全的 Laravel 应用,你不必非得成为安全专家。**GuardDog** 是一款零配置的静态安全分析器,它会扫描你的代码库,找出 Laravel 开发者实际会犯的、符合 OWASP 类别的错误,并生成一份清晰、可分享的 HTML 报告,附带一个团队可以共同关注的安全评分。 - ⚡ **零配置** — 在任何 Laravel 8–13 项目上开箱即用 - 🎯 **Laravel 感知** — 理解路由、中间件、Eloquent、Blade 和 `.env` - 📊 **精美的 HTML 报告**,附带 0–100 安全评分 - 🆓 **免费且开源** (MIT 许可) ## 📦 安装与配置 需要 PHP 7.4+ 和 Laravel 8–13。 ``` composer require jaydeep/laravel-guarddog --dev ``` Laravel 会自动发现服务提供者。发布配置文件(可选): ``` php artisan vendor:publish --tag=guarddog-config ``` ## ⚡ 快速开始 运行完整扫描: ``` php artisan guarddog:scan ``` 就这样。GuardDog 会扫描你的项目,并将 HTML 报告写入 `public/security-report.html`。 | 命令 | 作用 | |---|---| | `php artisan guarddog:scan` | 完整扫描 + HTML 报告 | | `php artisan guarddog:scan --no-html` | 仅控制台输出 | | `php artisan guarddog:scan --output=storage/report.html` | 自定义报告路径 | ## 📸 截图 ### 控制台输出 ![控制台扫描](https://raw.githubusercontent.com/JaydeepGadhiya/laravel-guarddog/main/docs/console-output.png) ### HTML 安全报告 ![HTML 报告](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/1fbef2065c140857.png) ## 🔍 功能 GuardDog 扫描最常见的 Laravel 安全漏洞: ### 代码级检查 - 🛑 **原始 SQL 注入风险** — `DB::statement()`、`DB::raw()` 以及带变量插值的 `whereRaw()` - 🛑 **未转义的 Blade 输出** — `{!! $userInput !!}` 会被标记为 XSS 风险 - 🛑 **批量赋值漏洞** — 模型缺少 `$fillable` 或 `$guarded` - 🛑 **不安全的 `eval()`、`shell_exec()`、`exec()`、`system()` 用法** ### 配置检查 - ⚠️ **生产环境中 `APP_DEBUG=true`** - ⚠️ **弱或缺失的 `APP_KEY`** - ⚠️ **默认的数据库凭据** - ⚠️ **`.env` 文件意外提交到 git** - ⚠️ **Session/Cookie 安全标志** (`SESSION_SECURE_COOKIE`, `SameSite`) ### 路由与中间件 - 🚧 **路由缺少 `auth` 中间件** - 🚧 **`VerifyCsrfToken` 中的 CSRF 排除项** - 🚧 **过于宽松的 CORS 配置** ### 依赖项 - 📦 **存在已知 CVE 的过时包**(通过 Packagist 安全公告) - 📦 **Composer `minimum-stability` 设置为 dev** ## 📋 报告示例 ``` ╔══════════════════════════════════════════════════════════╗ ║ 🐕 Laravel GuardDog Security Report ║ ╚══════════════════════════════════════════════════════════╝ Files scanned: 142 Issues found: 5 Security Score: 83 / 100 (Good) ● CRITICAL: 1 ● WARNING: 3 ● NOTICE: 1 ────────────────────────────────────────────────────────── CRITICAL Raw SQL with variable interpolation in DB::statement() File: app/Repositories/UserRepository.php:54 WARNING Route without auth middleware File: routes/web.php:23 ────────────────────────────────────────────────────────── Full HTML report: public/security-report.html ``` HTML 报告包含针对每个问题的修复指导、代码片段以及一个可分享的评分徽章。 ## 🤖 持续集成 当 GuardDog 发现严重问题时,使你的 CI 构建失败: ``` # .github/workflows/security.yml - name: Run GuardDog security scan run: php artisan guarddog:scan --no-html --fail-on=critical ``` GitLab、CircleCI 和 Bitbucket Pipelines 的用法类似 — 只需在你的任务中调用 artisan 命令即可。 ## ⚙️ 配置 发布配置文件 (`config/guarddog.php`) 后,你可以: - **禁用**你关心的特定检查 - 设置 CI 失败的**严重性阈值** - **排除路径**(例如 `vendor/`、`database/seeders/`) - **自定义 HTML 报告**的标题、Logo 和主题 ``` return [ 'enabled_checks' => [ 'sql_injection', 'unescaped_blade', 'mass_assignment', 'debug_mode', // ... ], 'exclude_paths' => [ 'database/seeders', 'database/factories', ], 'fail_on' => 'critical', // critical | warning | notice ]; ``` ## 📊 安全评分 GuardDog 对你的应用进行 0 到 100 的评分。每个问题会根据严重程度扣除分数: | 严重性 | 扣分 | 示例 | |---|---|---| | 🔴 严重 | -15 | SQL 注入、`eval()`、生产环境调试 | | 🟡 警告 | -5 | 缺少认证中间件、弱会话配置 | | 🔵 注意 | -1 | 风格/最佳实践小问题 | **80+** 分是良好。**90+** 分是优秀。**100** 分意味着 GuardDog 未发现任何问题 — 尽管没有扫描器能捕获所有漏洞,所以手动审查仍然重要。 ## ❓ 常见问题
这与 enlightn/enlightn 有何不同? Enlightn 是一个出色的、更全面的工具,涵盖安全、性能和可靠性。GuardDog 专注于**安全、轻量且零配置** — 设计用于快速集成到任何项目并运行,生成一份你可以交给非技术股东的精美报告。两者结合使用可获得最佳覆盖。
GuardDog 能替代 Roave Security Advisories 吗? 不能 — 它们互补。`roave/security-advisories` 在 Composer 层面阻止安装存在漏洞的包。GuardDog 扫描**你的应用程序代码**,查找你自己编写的漏洞。
GuardDog 能捕获所有安全问题吗? 没有静态分析器可以。GuardDog 能捕获一系列常见的 Laravel 特定错误,但生产安全还需要手动代码审查、依赖扫描、渗透测试和运行时保护。将 GuardDog 视为防御层之一。
它会将我的代码发送到任何地方吗? 不会。GuardDog 100% 在本地运行。没有遥测,不回传数据,不调用外部 API。
我能添加自定义检查吗? 可以 — GuardDog 附带一个可扩展的检查 API。请参阅[自定义检查指南](docs/custom-checks.md)。
## 🤝 贡献 如果你发现了一个安全问题,**请不要公开提交 issue**。请直接发送邮件至 `jaydeepgadhiya5699@gmail.com`。 ## 更新日志 最近更新请参阅 [CHANGELOG.md](CHANGELOG.md)。 ## 📜 许可证 MIT 许可证 (MIT)。请参阅 [LICENSE.md](LICENSE.md)。
**由 [Jaydeep Gadhiya](https://github.com/JaydeepGadhiya) 为 Laravel & 开源社区用 ❤️ 构建**
标签:ffuf, HTML报告, Laravel安全, Laravel框架, PHP安全, SQL注入检测, Web安全, XSS检测, 二进制发布, 云安全监控, 安全扫描, 安全报告, 安全评分, 开源工具, 时序注入, 蓝队分析, 认证中间件检查, 零配置扫描, 静态分析