affaan-m/ECC/docs/es/skills/laravel-security/SKILL.md
laravel-security
Buenas prácticas de seguridad en Laravel para autenticación/autorización, validación, CSRF, asignación masiva, subida de archivos, secretos, limitación de velocidad y despliegue seguro.
- Source repository stars
- 234,327
- Declared platforms
- 0
- Static risk flags
- 1
- Last source update
- 2026-07-27
- Source checked
- 2026-07-28
Decision brief
What it does—and where it fits
Guía completa de seguridad para aplicaciones Laravel que protege contra vulnerabilidades comunes.
Not for
- Tasks that require unconfirmed production actions or broad system permissions.
- Environments where the pinned source and install steps cannot be inspected.
Compatibility matrix
Platform support, with evidence labels
| Platform | Status | Evidence | What to check |
|---|---|---|---|
| Codex | Not declared | No explicit evidence | Portability before use |
| Claude Code | Not declared | No explicit evidence | Portability before use |
| Cursor | Not declared | No explicit evidence | Portability before use |
| Gemini CLI | Not declared | No explicit evidence | Portability before use |
Installation
Inspect first. Install second.
The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.
npx skills add https://github.com/affaan-m/ECC --skill "docs/es/skills/laravel-security"Inspect the Agent Skill "laravel-security" from https://github.com/affaan-m/ECC/blob/4e973d3eaf92d97f8d2e2d8abb39d8bdc8711b38/docs/es/skills/laravel-security/SKILL.md at commit 4e973d3eaf92d97f8d2e2d8abb39d8bdc8711b38. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.
Workflow
What the source asks the agent to do
- 01
Cuándo Activar
Agregar autenticación o autorización
Agregar autenticación o autorizaciónManejar entrada de usuarios y subida de archivosConstruir nuevos endpoints de API - 02
Cómo Funciona
El middleware proporciona protecciones de base (CSRF mediante VerifyCsrfToken, cabeceras de seguridad mediante SecurityHeaders).
El middleware proporciona protecciones de base (CSRF mediante VerifyCsrfToken, cabeceras de seguridad mediante SecurityHeaders).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. - 03
Configuración Principal de Seguridad
APPDEBUG=false en producción
APPDEBUG=false en producciónAPPKEY debe estar establecido y rotarse al comprometerseEstablecer SESSIONSECURECOOKIE=true y SESSIONSAMESITE=lax (o strict para apps sensibles) - 04
Reforzamiento de Sesión y Cookies
Establecer SESSIONHTTPONLY=true para prevenir acceso desde JavaScript
Establecer SESSIONHTTPONLY=true para prevenir acceso desde JavaScriptUsar SESSIONSAMESITE=strict para flujos de alto riesgoRegenerar sesiones al iniciar sesión y al cambiar privilegios - 05
Autenticación y Tokens
Ejemplo de protección de rutas:
Usar Laravel Sanctum o Passport para autenticación de APIPreferir tokens de corta vida con flujos de actualización para datos sensiblesRevocar tokens al cerrar sesión y en cuentas comprometidas
Permission review
Static risk signals and limitations
Network access
The documentation includes network, browsing, or remote request actions.
'allowed_origins' => ['https://app.example.com'],Evidence record
Why each signal appears
| Signal | Value | Evidence type | Meaning |
|---|---|---|---|
| Quality score | 78/100 | Computed | Documentation, specificity, maintenance, and trust rules |
| Repository stars | 234,327 | Source | Repository attention, not individual Skill quality |
| Compatibility | 0 platforms | Source | Declared in the catalog source record |
| Usage guide | automated source guide | Editorial | Generated or reviewed according to the visible evidence level |
Pinned source
Provenance and original SKILL.md
- Repository
- affaan-m/ECC
- Skill path
- docs/es/skills/laravel-security/SKILL.md
- Commit
- 4e973d3eaf92d97f8d2e2d8abb39d8bdc8711b38
- License
- MIT
- Collected
- 2026-07-28
- Default branch
- main
View the original SKILL.md
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');
Alternatives
Compare before choosing
affaan-m/ECC
laravel-security
Laravel security best practices — authentication, authorization, Eloquent safety, CSRF, XSS prevention, API security, and secure deployment configurations.
affaan-m/ECC
laravel-security
Use it for data analysis and engineering tasks; the detail page covers purpose, installation, and practical steps.
affaan-m/ECC
laravel-security
Laravel security best practices for authn/authz, validation, CSRF, mass assignment, file uploads, secrets, rate limiting, and secure deployment.
affaan-m/ECC
laravel-security
Use it for data analysis and engineering tasks; the detail page covers purpose, installation, and practical steps.