Awesome
Laravel Abuse-IP
##Keep you webiste safe from spammer.
Adds a Security to Laravel for checking whether the IP address is safe or marked as spam to keep you out of worry from spammers and fake data to your website. Uses the AbuseIPDB blocklist from borestad/blocklist-abuseipdb by default.
Installation
-
Run the Composer require command to install the package. The service provider is discovered automatically.
composer require rahulalam31/laravel-abuse-ip
-
Publish the configuration file and adapt the configuration as desired:
php artisan vendor:publish --tag=laravel-abuse-ip
-
Run the following artisan command to fetch an up-to-date list of disposable domains:
php artisan abuseip:update
3.1. Add the following to you .env
file.
Add ABUSEIP_STORAGE_PATH
to change your storage location,
Add ABUSEIP_STORAGE_COMPRESS
true/false
to enable or disable ip2long()
-
(optional) It's highly advised to update the AbuseIp list daily as the spam ip address keeps changing daily, but you can schedule it as per your need regularly. You can either run the command yourself now and then or, if you make use of Laravel's scheduler, you can register the
abuseip:update
command:In
routes/console.php
:use Illuminate\Support\Facades\Schedule; // Schedule::command('abuseip:update')->daily();
Or if you use Laravel 10 or below, head over to the Console kernel:
protected function schedule(Schedule $schedule) { $schedule->command('abuseip:update')->daily(); }
Usage
Use the middleware::AbuseIp::class
where ever required like in form page or post urls.Or you can add the middleware to your code, For Laravel 10 and below add the middleware Http/Kernel.php
, For Laravel 11 add to bootstrap/app/php
//Laravel 10 and below
/*
* app/Http/Kernel.php
*/
protected $middleware = [
\RahulAlam31\LaravelAbuseIp\Middleware\AbuseIp::class,
.....
]
//Laravel 11
/*
* bootstrap/app.php
*/
->withMiddleware(function (Middleware $middleware) {
$middleware->append(\RahulAlam31\LaravelAbuseIp\Middleware\AbuseIp::class);
})
If you don't want to put it in your route middleware you can make a aliasMiddleware()
and use the alias in your routes file to disable spam ip visits.
//Laravel 10 and below
/*
* app/Http/Kernel.php
*/
protected $routeMiddleware = [
.....,
'abuseip' => \RahulAlam31\LaravelAbuseIp\Middleware\AbuseIp::class,
]
Route::get('/xyz', function () {
//
})->middleware('abuseip');
//Laravel 11
/*
* bootstrap/app.php
*/
->withMiddleware(function (Middleware $middleware) {
//
})
->aliasMiddleware('abuse_ip', \RahulAlam31\LaravelAbuseIp\Middleware\AbuseIp::class)
// Or use in route file
Route::middleware(AbuseIp::class)->get('/', function () {
return view('welcome');
});
Custom fetches
By default the package retrieves a new list by using file_get_contents()
.
If you have your own blacklisted Ip List add it to the source
in config/abuseip.php