
Laravel Security
- 1.4k installs
- 238k repo stars
- Updated August 5, 2026
- affaan-m/ecc
This is a copy of laravel-security by affaan-m - installs and ranking accrue to the original listing.
laravel-security is an agent skill that applies Laravel security best practices for authentication, authorization, Eloquent safety, CSRF, XSS, API protection, file uploads, rate limiting, and secure production configurat
About
laravel-security is an ECC agent skill with a complete Laravel security guide covering authentication, authorization, input validation, CSRF middleware, mass-assignment protection, file upload safety, API endpoint hardening, secrets management, rate limiting, and secure production deployment. Developers activate it when adding Laravel auth, handling user input and uploads, building new API routes, or reinforcing environment configuration. The skill explains how Laravel middleware delivers baseline CSRF and session protections and where developers must add validation, policy checks, and deployment hardening. Reach for laravel-security during new endpoint work or pre-production security reviews on Laravel codebases.
- Covers authentication and authorization with Sanctum, Passport, Jetstream and Breeze
- Guides implementation of user roles, permissions and policies
- Provides essential production configuration settings for app, session and environment files
- Includes secure Eloquent query and migration patterns
- Details API security, CSRF, XSS prevention and secure deployment steps
Laravel Security by the numbers
- 1,401 all-time installs (skills.sh)
- +85 installs in the week ending Aug 5, 2026 (Skillselion tracking)
- Data as of Aug 5, 2026 (Skillselion catalog sync)
npx skills add https://github.com/affaan-m/ecc --skill laravel-securityAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 1.4k |
|---|---|
| repo stars | ★ 238k |
| Last updated | August 5, 2026 |
| Repository | affaan-m/ecc ↗ |
How do you secure a Laravel API for production?
Apply Laravel security best practices for authentication, authorization, Eloquent safety, CSRF and XSS prevention, API protection, and secure production configuration.
Who is it for?
Laravel developers adding auth, APIs, or file uploads who need framework-specific security guidance before production.
Skip if: Non-PHP backends or teams needing only server-level firewall rules without Laravel application security patterns.
When should I use this skill?
The developer is adding Laravel authentication, building API endpoints, handling uploads, or hardening Laravel production configuration.
What you get
Hardened Laravel middleware config, validation rules, secrets handling, and API protection patterns.
- middleware security configuration
- validation and policy patterns
- production deployment checklist
Files
Buenas Prácticas de Seguridad en Laravel
Guía completa de seguridad para aplicaciones Laravel que protege contra vulnerabilidades comunes.
Cuándo Activar
- Agregar autenticación o autorización
- Manejar entrada de usuarios y subida de archivos
- Construir nuevos endpoints de API
- Gestionar secretos y configuración de entornos
- Reforzar despliegues en producción
Cómo Funciona
- El middleware proporciona protecciones de base (CSRF mediante
VerifyCsrfToken, cabeceras de seguridad medianteSecurityHeaders). - Los guards y policies aplican el control de acceso (
auth:sanctum,$this->authorize, middleware de policy). - Los Form Requests validan y dan forma a la entrada (
UploadInvoiceRequest) antes de que llegue a los servicios. - La limitación de velocidad agrega protección contra abusos (
RateLimiter::for('login')) junto con controles de autenticación. - La seguridad de datos proviene de casts encriptados, guards de asignación masiva y rutas firmadas (
URL::temporarySignedRoute+ middlewaresigned).
Configuración Principal de Seguridad
APP_DEBUG=falseen producciónAPP_KEYdebe estar establecido y rotarse al comprometerse- Establecer
SESSION_SECURE_COOKIE=trueySESSION_SAME_SITE=lax(ostrictpara apps sensibles) - Configurar proxies de confianza para la detección correcta de HTTPS
Reforzamiento de Sesión y Cookies
- Establecer
SESSION_HTTP_ONLY=truepara prevenir acceso desde JavaScript - Usar
SESSION_SAME_SITE=strictpara flujos de alto riesgo - Regenerar sesiones al iniciar sesión y al cambiar privilegios
Autenticación y Tokens
- Usar Laravel Sanctum o Passport para autenticación de API
- Preferir tokens de corta vida con flujos de actualización para datos sensibles
- Revocar tokens al cerrar sesión y en cuentas comprometidas
Ejemplo de protección de rutas:
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;
Route::middleware('auth:sanctum')->get('/me', function (Request $request) {
return $request->user();
});Seguridad de Contraseñas
- Hashear contraseñas con
Hash::make()y nunca almacenar texto plano - Usar el password broker de Laravel para los flujos de restablecimiento
use Illuminate\Support\Facades\Hash;
use Illuminate\Validation\Rules\Password;
$validated = $request->validate([
'password' => ['required', 'string', Password::min(12)->letters()->mixedCase()->numbers()->symbols()],
]);
$user->update(['password' => Hash::make($validated['password'])]);Autorización: Policies y Gates
- Usar policies para autorización a nivel de modelo
- Aplicar autorización en controladores y servicios
$this->authorize('update', $project);Usar middleware de policy para aplicación a nivel de ruta:
use Illuminate\Support\Facades\Route;
Route::put('/projects/{project}', [ProjectController::class, 'update'])
->middleware(['auth:sanctum', 'can:update,project']);Validación y Sanitización de Datos
- Siempre validar entradas con Form Requests
- Usar reglas de validación estrictas y verificaciones de tipo
- Nunca confiar en los payloads de la request para campos derivados
Protección contra Asignación Masiva
- Usar
$fillableo$guardedy evitarModel::unguard() - Preferir DTOs o mapeo explícito de atributos
Prevención de Inyección SQL
- Usar Eloquent o el query builder con binding de parámetros
- Evitar SQL crudo a menos que sea estrictamente necesario
DB::select('select * from users where email = ?', [$email]);Prevención de XSS
- Blade escapa la salida por defecto (
{{ }}) - Usar
{!! !!}solo para HTML de confianza y sanitizado - Sanitizar texto enriquecido con una librería dedicada
Protección CSRF
- Mantener el middleware
VerifyCsrfTokenhabilitado - Incluir
@csrfen formularios y enviar tokens XSRF en requests de SPA
Para autenticación SPA con Sanctum, asegurarse de que las requests stateful estén configuradas:
// config/sanctum.php
'stateful' => explode(',', env('SANCTUM_STATEFUL_DOMAINS', 'localhost')),Seguridad en Subida de Archivos
- Validar tamaño de archivo, tipo MIME y extensión
- Almacenar subidas fuera del directorio público cuando sea posible
- Escanear archivos en busca de malware si es necesario
final class UploadInvoiceRequest extends FormRequest
{
public function authorize(): bool
{
return (bool) $this->user()?->can('upload-invoice');
}
public function rules(): array
{
return [
'invoice' => ['required', 'file', 'mimes:pdf', 'max:5120'],
];
}
}$path = $request->file('invoice')->store(
'invoices',
config('filesystems.private_disk', 'local') // establecer a un disco no público
);Limitación de Velocidad
- Aplicar middleware
throttleen endpoints de autenticación y escritura - Usar límites más estrictos para login, restablecimiento de contraseña y OTP
use Illuminate\Cache\RateLimiting\Limit;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\RateLimiter;
RateLimiter::for('login', function (Request $request) {
return [
Limit::perMinute(5)->by($request->ip()),
Limit::perMinute(5)->by(strtolower((string) $request->input('email'))),
];
});Secretos y Credenciales
- Nunca hacer commit de secretos al control de versiones
- Usar variables de entorno y gestores de secretos
- Rotar claves después de una exposición e invalidar sesiones
Atributos Encriptados
Usar casts encriptados para columnas sensibles en reposo.
protected $casts = [
'api_token' => 'encrypted',
];Cabeceras de Seguridad
- Agregar CSP, HSTS y protección de frames donde sea apropiado
- Usar configuración de proxies de confianza para forzar redirecciones HTTPS
Ejemplo de middleware para establecer cabeceras:
use Illuminate\Http\Request;
use Symfony\Component\HttpFoundation\Response;
final class SecurityHeaders
{
public function handle(Request $request, \Closure $next): Response
{
$response = $next($request);
$response->headers->add([
'Content-Security-Policy' => "default-src 'self'",
'Strict-Transport-Security' => 'max-age=31536000', // agregar includeSubDomains/preload solo cuando todos los subdominios sean HTTPS
'X-Frame-Options' => 'DENY',
'X-Content-Type-Options' => 'nosniff',
'Referrer-Policy' => 'no-referrer',
]);
return $response;
}
}CORS y Exposición de API
- Restringir orígenes en
config/cors.php - Evitar orígenes wildcard para rutas autenticadas
// config/cors.php
return [
'paths' => ['api/*', 'sanctum/csrf-cookie'],
'allowed_methods' => ['GET', 'POST', 'PUT', 'PATCH', 'DELETE'],
'allowed_origins' => ['https://app.example.com'],
'allowed_headers' => [
'Content-Type',
'Authorization',
'X-Requested-With',
'X-XSRF-TOKEN',
'X-CSRF-TOKEN',
],
'supports_credentials' => true,
];Logging y PII
- Nunca registrar contraseñas, tokens o datos completos de tarjetas
- Redactar campos sensibles en logs estructurados
use Illuminate\Support\Facades\Log;
Log::info('User updated profile', [
'user_id' => $user->id,
'email' => '[REDACTED]',
'token' => '[REDACTED]',
]);Seguridad de Dependencias
- Ejecutar
composer auditregularmente - Fijar dependencias con cuidado y actualizar rápidamente ante CVEs
URLs Firmadas
Usar rutas firmadas para enlaces temporales a prueba de manipulaciones.
use Illuminate\Support\Facades\URL;
$url = URL::temporarySignedRoute(
'downloads.invoice',
now()->addMinutes(15),
['invoice' => $invoice->id]
);use Illuminate\Support\Facades\Route;
Route::get('/invoices/{invoice}/download', [InvoiceController::class, 'download'])
->name('downloads.invoice')
->middleware('signed');Related skills
How it compares
Pick laravel-security for Laravel-specific middleware and Eloquent patterns; use django-security or generic appsec skills for other frameworks.
FAQ
What Laravel risks does laravel-security address?
laravel-security covers authentication, authorization, CSRF, XSS, Eloquent mass assignment, unsafe file uploads, exposed secrets, missing rate limits, and insecure production configuration in Laravel apps.
Does laravel-security cover API endpoints?
laravel-security includes guidance for securing new Laravel API endpoints with validation, middleware protections, rate limiting, and environment secret management during deployment.