noobsec/antiscanscanclub-laravel

用于阻止自动化扫描器扫描您网站的 Laravel 扩展包

v2.0.3 2019-12-25 00:35 UTC

This package is auto-updated.

Last update: 2024-09-12 00:49:39 UTC


README

GitHub (pre-)release Built for Laravel Build Status Total Downloads LICENSE GitHub issues GitHub closed pull requests Contributions Welcome

用于阻止自动化扫描器扫描您网站的 Laravel 扩展包。

how_antiscanscanclub_work

安装

$ composer require noobsec/antiscanscanclub-laravel
  • 请保持此包与最新提交同步
$ composer require noobsec/antiscanscanclub-laravel:dev-master

Laravel 5+

设置

  1. 发布配置文件
php artisan vendor:publish --provider="noobsec\AntiScanScanClub\AntiScanScanClubServiceProvider"
  1. 创建中间件
$ php artisan make:middleware AntiScanScanMiddleware

配置

  1. .env 文件中添加 ASSC_LIST

注意:黑名单文件将存储在 storage/app/ 路径下

ASSC_LIST="blacklists.json"
  1. 编辑 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);
    }
}
  1. 将中间件添加到全局 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.gzwww.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 且仍在开发中。