laravel-security
Ajuda seu agente a proteger aplicações Laravel contra ameaças. Implementa práticas de segurança para autenticação, autorização e prevenção de ataques comuns.
O que ela faz
Este agente ajuda a tornar seu aplicativo Laravel mais seguro. Ele verifica configurações importantes, como proteção contra ataques comuns (XSS, CSRF), gerenciamento de usuários e como o aplicativo se comunica pela internet.
Quando usar
- ✓Ao configurar a segurança de um novo aplicativo Laravel.
- ✓Ao revisar um aplicativo Laravel existente para encontrar falhas de segurança.
- ✓Antes de colocar seu aplicativo Laravel no ar (produção).
Exemplo do que pedir para a IA
“Como posso garantir que meu aplicativo Laravel esteja protegido contra ataques XSS?”
Quer saber mais? Abra as seções abaixo.
Como usar
O jeito mais fácil: copie a mensagem abaixo e cole no Claude, ChatGPT, Cursor ou outra IA. Ela lê a skill e segue as instruções.
Link da skill
Mensagem pronta para colar
Como funciona
Ele analisa as configurações do seu aplicativo Laravel, como as de autenticação, autorização e as que protegem contra ataques comuns. Ele sugere ou verifica se essas configurações estão corretas para evitar problemas.
Instalação
Jeito mais fácil: copie o link da skill e cole no Claude, ChatGPT ou Cursor pedindo para seguir as instruções.
No terminal (Claude Code, Codex, Cursor), na pasta do projeto:
npx skills add affaan-m/ECC --skill laravel-securityOu baixe só o arquivo:
curl -L https://raw.githubusercontent.com/affaan-m/ECC/main/pi/core/skills/laravel-security/SKILL.md -o SKILL.mdConteúdo técnico (SKILL.md)
Tradução do texto original do autor no GitHub. Os comandos e códigos estão como no original.
Melhores Práticas de Segurança para Laravel
Diretrizes abrangentes de segurança para aplicações Laravel para proteger contra vulnerabilidades comuns.
Quando Ativar
- Configurando autenticação e autorização do Laravel (Sanctum, Passport, Jetstream, Breeze)
- Implementando papéis, permissões e políticas de usuário
- Configurando configurações de segurança de produção e variáveis de ambiente
- Revisando aplicações Laravel em busca de vulnerabilidades de segurança
- Implantando aplicações Laravel em produção
- Escrevendo consultas Eloquent e migrações seguras
Configuração de Produção
Configurações Essenciais de Produção
// config/app.php
'env' => env('APP_ENV', 'production'),
'debug' => (bool) env('APP_DEBUG', false), // CRITICAL: Never true in production
'key' => env('APP_KEY'), // Must be set: php artisan key:generate
// config/session.php
'secure' => env('SESSION_SECURE_COOKIE', true),
'http_only' => true,
'same_site' => 'lax',
// Verify APP_KEY is set at boot
// bootstrap/app.php or a service provider
if (empty(config('app.key'))) {
throw new RuntimeException('APP_KEY is not set. Run: php artisan key:generate');
}
Segurança do Arquivo de Ambiente
# NEVER commit .env to version control
# .gitignore already includes .env by default
# Use .env.example with placeholders instead
DB_PASSWORD=
APP_KEY=
SANCTUM_TOKEN_PREFIX=
# Validate required variables at boot
// In AppServiceProvider::boot()
$requiredKeys = ['app.key', 'database.connections.mysql.database', 'database.connections.mysql.username'];
foreach ($requiredKeys as $key) {
if (empty(config($key))) {
throw new RuntimeException("Missing required config key: {$key}");
}
}
Aplicação de HTTPS
// AppServiceProvider::boot() or middleware
if (app()->environment('production')) {
URL::forceScheme('https');
request()->server->set('HTTPS', 'on');
}
// config/app.php for trusted proxies (load balancers)
// Use specific IP ranges — * trusts all, allowing X-Forwarded-* spoofing
// AWS: '10.0.0.0/8', '172.16.0.0/12', '192.168.0.0/16'
'trusted_proxies' => ['10.0.0.0/8', '172.16.0.0/12'],
// Force HTTPS in production via middleware
// app/Http/Middleware/ForceHttps.php
public function handle($request, Closure $next)
{
if (!$request->secure() && app()->environment('production')) {
return redirect()->secure($request->getRequestUri());
}
return $next($request);
}
Autenticação
Sanctum (Autenticação por Token de API)
// config/sanctum.php
'stateful' => explode(',', env('SANCTUM_STATEFUL_DOMAINS', sprintf(
'%s%s',
'localhost,localhost:3000,127.0.0.1,127.0.0.1:8000,::1',
env('APP_URL') ? ',' . parse_url(env('APP_URL'), PHP_URL_HOST) : ''
)));
'expiration' => 60 * 24, // Token expiration in minutes (null = never)
'token_prefix' => env('SANCTUM_TOKEN_PREFIX', ''),
// Issuing tokens with abilities
$token = $user->createToken('api-token', ['read', 'write'])->plainTextToken;
// Validate abilities on routes
Route::middleware('auth:sanctum')->group(function () {
Route::get('/orders', function () {
// User must have 'read' ability
abort_unless(Auth::user()->tokenCan('read'), 403);
// ...
})->middleware('abilities:read');
Route::post('/orders', function () {
// User must have 'write' ability
abort_unless(Auth::user()->tokenCan('write'), 403);
// ...
})->middleware('abilities:write');
});
Segurança de Senha
// config/hashing.php
// Default is bcrypt. Argon2id is stronger.
'bcrypt' => [
'rounds' => env('BCRYPT_ROUNDS', 12), // Increase for stronger hashing
],
'argon' => [
'memory' => 65536,
'threads' => 4,
'time' => 4,
],
// Password validation in RegisterRequest
public function rules(): array
{
return [
'password' => [
'required',
'confirmed',
Password::min(12)
->letters()
->mixedCase()
->numbers()
->symbols()
->uncompromised(), // Checks haveibeenpwned
],
];
}
// Rate limit login attempts
// App\Http\Controllers\Auth\AuthenticatedSessionController
protected function authenticated(Request $request, $user)
{
if ($user->wasRecentlyLockedOut()) {
// Notify user of suspicious login
$user->notify(new SuspiciousLoginNotification($request->ip()));
}
}
Gerenciamento de Sessão
// config/session.php
…
Perguntas frequentes
O que é 'CSRF' e 'XSS'?
São tipos de ataques na web. CSRF tenta fazer com que o usuário execute ações indesejadas. XSS injeta scripts maliciosos no seu site.
O que é 'autenticação' e 'autorização'?
Autenticação é verificar quem você é (login e senha). Autorização é verificar o que você pode fazer depois de estar logado (permissões).
Por que é importante configurar o 'APP_KEY'?
A APP_KEY é usada para criptografar dados sensíveis do seu aplicativo. Se ela não estiver definida ou for conhecida por atacantes, seus dados podem ser comprometidos.
Detalhes
Descrição original do autor
Laravel security best practices — authentication, authorization, Eloquent safety, CSRF, XSS prevention, API security, and secure deployment configurations. Use when reviewing Laravel auth, Eloquent safety, CSRF, XSS, API security, or deployment configuration.
repo: affaan-m/ECC
Popularidade
- Estrelas no GitHub
- 280 mil
- Posição no ranking
- #75
- Licença
- MIT
- Atualizada em
- 15/10/2026
Comentários
- …
Mais skills deste repositório
accessibility
Ajuda seu agente a criar interfaces que todos possam usar. Garante que sites e aplicativos funcionem bem para pessoas com deficiência, como cegos ou com mobilidade reduzida.
affaan-m/ECC
agent-architecture-audit
Faz seu agente verificar se tudo está funcionando corretamente. Ele encontra e conserta problemas em sistemas de IA, garantindo que funcionem como esperado.
affaan-m/ECC
agent-eval
Ajuda seu agente a comparar diferentes ferramentas de programação de IA. Ele mede qual é mais rápido, barato e confiável para realizar tarefas específicas.
affaan-m/ECC
agent-harness-construction
Faz seu agente entender melhor como realizar tarefas. Ele otimiza as ferramentas e instruções que o agente usa para aumentar suas chances de sucesso.
affaan-m/ECC
Skills parecidas
security-and-hardening
Protege seu código contra ataques e falhas de segurança. Garante que dados sensíveis estejam seguros e que o sistema seja confiável.
addyosmani/agent-skills
luna
Faz seu agente verificar se o código está seguro e funcionando corretamente. Ele procura por erros e falhas que possam causar problemas.
sickn33/agentic-awesome-skills
anti-reversing-techniques
Ajuda seu agente a analisar técnicas de segurança em programas. Permite entender como softwares se protegem contra cópias ou alterações.
sickn33/agentic-awesome-skills