noobsec / antiscanscanclub-laravel
用于阻止自动化扫描器扫描您网站的 Laravel 扩展包
v2.0.3
2019-12-25 00:35 UTC
Requires
Requires (Dev)
- mockery/mockery: ^1.1
- orchestra/testbench: ~3.0
- phpunit/phpunit: ~7.0
- sempro/phpunit-pretty-print: ^1.0
README
用于阻止自动化扫描器扫描您网站的 Laravel 扩展包。
安装
$ composer require noobsec/antiscanscanclub-laravel
- 请保持此包与最新提交同步
$ composer require noobsec/antiscanscanclub-laravel:dev-master
Laravel 5+
设置
- 发布配置文件
php artisan vendor:publish --provider="noobsec\AntiScanScanClub\AntiScanScanClubServiceProvider"
- 创建中间件
$ php artisan make:middleware AntiScanScanMiddleware
配置
- 在 .env 文件中添加
ASSC_LIST
注意:黑名单文件将存储在 storage/app/
路径下
ASSC_LIST="blacklists.json"
- 编辑 AntiScanScanMiddleware 文件 (app/Http/Middleware/AntiScanScanMiddleware.php),例如
<?php namespace App\Http\Middleware; use Closure; use noobsec\AntiScanScanClub\AntiScanScanClub; class AntiScanScanMiddleware { /** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed */ public function handle($request, Closure $next) { $ASSC = new AntiScanScanClub(); $blocker = TRUE; $ASSC->checkIp($request->ip()); if ($request->isMethod('GET') && $request->getQueryString() === NULL) { /** * Prevention of access to credentials and/ important files/path * (e.g: wp-admin.php, .git/, backups.tar.gz, www.sql) */ $ASSC->filterFile($request->getPathInfo(), $blocker, $request->ip()); } else { $ASSC->filterInput($request->all(), $blocker, $request->ip()); } return $next($request); } }
- 将中间件添加到全局 HTTP 中间件堆栈,编辑 Kernel 文件 (app/Http/Kernel.php)
protected $middleware = [ ... \App\Http\Middleware\AntiScanScanMiddleware::class, ];
用法
- 初始化 AntiScanScanClub 源
use noobsec\AntiScanScanClub\AntiScanScanClub; $ASSC = new AntiScanScanClub();
- 检查客户端 IP 是否已被阻止
$clientIp = '127.0.0.1'; var_dump($ASSC->checkIp($clientIp)); // @return void/bool
- 将客户端 IP 添加到黑名单文件中
$clientIp = '127.0.0.1'; $attack_type = 'Added manually'; var_dump($ASSC->addToBlacklisted($clientIp, $attack)); // @return bool
- 基于过滤规则防止非法输入
$data = [ "input" => "Test payload", "textarea" => "<object/onerror=write`1`//" ]; $blocker = TRUE; $clientIp = '127.0.0.1'; $ASSC->filterInput($data, $blocker, $clientIp); // @return void/bool
- 防止访问凭证和/或重要文件/路径
例如: wp-admin.php
、.git/
、backups.tar.gz
、www.sql
等(更多内容请见 filter_files.txt)
$url = "/wp-admin.php"; $blocker = TRUE; $clientIp = '127.0.0.1'; $ASSC->filterFile($url, $blocker, $clientIp); // @return void/bool
- 从黑名单文件中删除客户端 IP
$clientIp = '127.0.0.1'; var_dump($ASSC->removeFromBlacklists($clientIp)); // @return bool
- 清除和/或清理黑名单文件中的所有客户端 IP
var_dump($ASSC->purgeBlacklistsFile()); // @return bool
- 从 filterFile() 拒绝中白名单单个文件/路径
var_dump($ASSC->whitelistFile('wp-admin.php')); // @return bool
- 从 filterFile() 拒绝中递归地白名单所有公共文件
var_dump(whitelistPublicFiles()); // @return array
- 从 filterFile() 拒绝中白名单所有注册路由的 URI
var_dump(whitelistAllRoutes()); // @return array
- 将文件和/或路径添加到 filterFile() 拒绝中
$file = "api/adminLists"; var_dump(addToFilterFiles($file)); // @return integer/bool
- 将 filterFile() 规则恢复为默认值
var_dump($ASSC->restoreFilterFiles()); // @return bool
注意
- 如果您调用
filterInput()
和/或filterFile()
方法,则不再需要调用addToBlacklisted()
方法。 - 或者,如果您想调用
whitelistFile()
、whitelistPublicFiles()
和/或whitelistAllRoutes()
方法,请确保在filterFile()
和/或searchIp()
方法之前调用此方法 (或注释这些方法,请检查中间件)。
变更日志
请参阅 CHANGELOG 了解最近更改的详细信息。
贡献
请参阅 CONTRIBUTING.md 了解详细信息。
安全
如果您发现任何与安全相关的问题,请通过电子邮件 root@noobsec.org 反馈,而不是使用问题跟踪器。
致谢
支持材料
许可协议
许可协议。有关更多信息,请参阅 LICENSE 文件。
版本
当前版本为 2.0.3 且仍在开发中。