1. Go to this page and download the library: Download sagor/laravel-security library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
sagor / laravel-security example snippets
use Sagor\LaravelSecurity\Http\Middleware\SecurityMiddleware;
use Sagor\LaravelSecurity\Http\Middleware\SecurityUploadMiddleware;
use Sagor\LaravelSecurity\Http\Middleware\SecurityApiMiddleware;
return Application::configure(basePath: dirname(__DIR__))
->withRouting(
web: __DIR__.'/../routes/web.php',
commands: __DIR__.'/../routes/console.php',
health: '/up',
)
->withMiddleware(function (Middleware $middleware) {
// Global web protection
$middleware->web(append: [
SecurityMiddleware::class,
]);
// Middleware Aliases
$middleware->alias([
'security' => SecurityMiddleware::class,
'security.upload' => SecurityUploadMiddleware::class,
'security.api' => SecurityApiMiddleware::class,
]);
})->create();
namespace App\Security\Rules;
use Sagor\LaravelSecurity\Contracts\SecurityRule;
use Sagor\LaravelSecurity\Firewall\SecurityContext;
use Sagor\LaravelSecurity\Firewall\SecurityRuleResult;
class BlockForbiddenKeywords implements SecurityRule
{
public function getId(): string
{
return 'custom.forbidden_keywords';
}
public function getDescription(): string
{
return 'Blocks requests containing internal restricted payload terms.';
}
public function check(SecurityContext $context): SecurityRuleResult
{
$payload = json_encode($context->getNormalizedPayload());
if (str_contains($payload, 'INTERNAL_SECRET_KEY')) {
return SecurityRuleResult::threat(
$this->getId(),
'critical',
1.0,
95,
'Forbidden internal keyword detected in payload.'
);
}
return SecurityRuleResult::clean($this->getId());
}
}
use Sagor\LaravelSecurity\Facades\LaravelSecurity;
use App\Security\Rules\BlockForbiddenKeywords;
public function boot()
{
LaravelSecurity::addRule(new BlockForbiddenKeywords());
}
Route::resource('products', ProductController::class);
// Or individual dynamic routes:
Route::get('/products/{id}/edit', [ProductController::class, 'edit'])->name('products.edit');