tomakakwark/wafy
GitHub: tomakakwark/wafy
Wafy 是一个 Laravel 防火墙扩展包,通过中间件自动封禁恶意 IP 并检测 SQL 注入、XSS、LFI、RCE 等攻击请求。
Stars: 1 | Forks: 0
# Wafy - Laravel 防火墙 & 恶意请求检测器



**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过滤, 中间件, 安全组件, 恶意请求检测, 攻击缓解, 网络安全, 防御机器人, 防火墙, 隐私保护