tomakakwark/wafy

GitHub: tomakakwark/wafy

Wafy 是一个 Laravel 防火墙扩展包,通过中间件自动封禁恶意 IP 并检测 SQL 注入、XSS、LFI、RCE 等攻击请求。

Stars: 1 | Forks: 0

# Wafy - Laravel 防火墙 & 恶意请求检测器 ![License](https://img.shields.io/badge/license-MIT-blue.svg) ![PHP](https://img.shields.io/badge/php-%3E%3D7.4-8892BF.svg) ![Laravel](https://img.shields.io/badge/laravel-%5E8.0%7C%5E9.0%7C%5E10.0%7C%5E11.0%7C%5E12.0-FF2D20.svg) **Wafy** 是由 **Bdsa** 开发的一个健壮的 Laravel 包,旨在自动封禁 IP 地址并检测恶意请求,包括 SQL 注入 (SQL Injection)、XSS 等。 ## 功能特性 - 🛡️ **IP 封禁**:自动封锁从事可疑活动的 IP。 - 🕵️ **恶意请求检测**:检测 SQLi、XSS、LFI 和 RCE 尝试。 - ⏱️ **临时与永久封禁**:可配置的封禁持续时间。 - ⚙️ **可自定义模式**:定义您自己的正则表达式模式进行检测。 - 🖥️ **Artisan 命令**:通过 CLI 轻松管理被封禁的 IP。 ## 安装 ### 1. 使用 Composer 引入 将此包添加到您的项目中: ``` composer require bdsa/wafy ``` ### 2. 发布配置 发布配置文件和迁移文件: ``` php artisan vendor:publish --provider="Bdsa\Wafy\WafyServiceProvider" ``` ### 3. 运行迁移 创建 `banned_ips` 表: ``` php artisan migrate ``` ## 使用说明 ### 中间件 Wafy 提供了两个关键的中间件:BlockBannedIp 和 DetectMaliciousRequests。 #### 保护路由 将中间件应用于您的路由或路由组: ``` use Bdsa\Wafy\Middleware\BlockBannedIp; use Bdsa\Wafy\Middleware\DetectMaliciousRequests; Route::group(['middleware' => ['block.banned.ip', 'detect.malicious.requests']], function () { Route::get('/', function () { return view('welcome'); }); // Your protected routes }); ``` ### Artisan 命令 直接从终端管理被封禁的 IP: - **手动封禁 IP:** php artisan wafy:ban {ip_address} [--reason="Your reason"] - **解封 IP:** php artisan wafy:unban {ip_address} - **列出所有被封禁的 IP:** php artisan wafy:list - **启用/禁用 WAF:** php artisan wafy:mode {enable|disable} - **设置操作模式(拦截或仅记录日志):** php artisan wafy:action {block|log} ## 配置 配置文件位于 `config/wafy.php`。您可以在此自定义检测模式。 默认防护涵盖: - **SQL 注入 (SQLi)**:`UNION SELECT`、常见 SQL 动词、十六进制编码。 - **本地文件包含 (LFI)**:目录遍历 (`../`)、系统文件 (`/etc/passwd`)。 - **跨站脚本攻击 (XSS)**:Script 标签、事件处理程序 (`onload`, `onerror`)。 - **远程代码执行 (RCE)**:Shell 命令 (`cat`, `wget`)、PHP 执行函数。 示例 `config/wafy.php`: ``` return [ 'enabled' => env('WAFY_ENABLED', true), 'patterns' => [ '/(union(\s+all)?\s+select)/i', '/(select\s+.*\s+from|delete\s+from|update\s+.*\s+set)/i', '/(.*?<\/script>)/is', // Add your custom patterns here ], 'allowed_ips' => [ '127.0.0.1', // Localhost '192.168.1.1', // Office IP ], 'notifications' => [ 'enabled' => env('WAFY_NOTIFICATIONS_ENABLED', false), 'channels' => ['mail'], // Choose 'mail', 'slack' or both 'email' => env('WAFY_NOTIFICATION_EMAIL', 'admin@example.com'), 'slack_webhook' => env('WAFY_SLACK_WEBHOOK', ''), ], ]; ``` ## 测试 运行包测试: ``` vendor/bin/phpunit ``` ## 许可证 本项目基于 [MIT 许可证](LICENSE) 授权。
标签:AppImage, Artisan命令, Composer包, DOE合作, ffuf, IP封禁, Laravel, Laravel安全, LFI防护, OpenVAS, PHP, RCE防护, SQL注入防护, WAF, Web应用防火墙, XSS过滤, 中间件, 安全组件, 恶意请求检测, 攻击缓解, 网络安全, 防御机器人, 防火墙, 隐私保护