| Install | |
|---|---|
composer require darvis/livewire-injection-stopper |
|
| Latest Version: | v1.2.3 |
| PHP: | ^8.1|^8.2|^8.3 |
Protect your Laravel + Livewire application from spam bots and security vulnerabilities.
This package protects your Laravel application in three ways:
Automatically blocks automated spam bots (like Python scripts, curl, wget) from accessing your website. No more spam form submissions!
Scans your Livewire components and tells you which properties attackers could manipulate. For example, if you have public $isAdmin = false, an attacker could change it to true in their browser!
When bots manipulate Livewire payloads, they can trigger CannotUpdateLockedPropertyException or Livewire property-assignment TypeError exceptions. This package silently handles those bot-driven exceptions and prevents them from being reported to Sentry or other error tracking services, keeping your error logs clean.
composer require darvis/livewire-injection-stopper
That's it! The spam bot blocking is now active.
Run this command to scan your Livewire components:
php artisan livewire-injection-stopper:audit
It will show you which properties need protection.
Before (Vulnerable):
class CheckoutComponent extends Component
{
public $price = 100.00; // ⚠️ Attacker can change this to $0.01!
}
After (Secure):
use Livewire\Attributes\Locked;
class CheckoutComponent extends Component
{
#[Locked] // ✅ Now protected!
public $price = 100.00;
}
By default, these bots are blocked:
python-requests)curl, wget)scrapy)Real browsers and users are never blocked.
Want to customize? Publish the config file:
php artisan vendor:publish --tag=livewire-injection-stopper-config
Now you can:
By default, this package silences bot-driven Livewire update exceptions, including:
CannotUpdateLockedPropertyExceptionTypeError exceptions (for example: Cannot assign array to property ...)This keeps your Sentry error logs clean.
How it works:
If your app overrides report() in app/Exceptions/Handler.php and directly calls Sentry (captureException), make sure you skip reporting when SilentExceptionHandler::shouldSilence($exception) returns true. Otherwise, your custom handler can bypass package silencing.
To disable this feature:
// config/livewire-injection-stopper.php
'silence_locked_property_exceptions' => false,
For detailed documentation, see the /docs folder:
MIT License - feel free to use in any project!
Created by Arvid de Jong
Need help? Check the documentation or email info@arvid.nl