Pular para o conteúdo
Skillpedia
Segurança280 mil · #75

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

https://github.com/affaan-m/ECC/blob/main/pi/core/skills/laravel-security/SKILL.md

Mensagem pronta para colar

Use esta skill para me ajudar: https://github.com/affaan-m/ECC/blob/main/pi/core/skills/laravel-security/SKILL.md Leia o arquivo SKILL.md desse link e siga as instruções dele na minha tarefa.
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-security

Ou baixe só o arquivo:

curl -L https://raw.githubusercontent.com/affaan-m/ECC/main/pi/core/skills/laravel-security/SKILL.md -o SKILL.md
Conteú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

Essa skill é útil?

0

Entre para votar.

Comentários

  • …

Mais skills deste repositório

Skills parecidas