O prático Laravel segurança lista de verificação
Por Andrea Pollastri · Última atualização: · grátis para ler, sem acesso pago
A maioria dos aplicativos Laravel não são hackeados por dias zero inteligentes. Eles são hackeados por arquivos .env expostos, modo de depuração deixado ativado, PHP sem patch e SSH fraco. Esta lista de verificação cobre primeiro o trabalho chato e de alto impacto – servidor, aplicativo, dependências, segredos e resposta – com uma maneira de automatizar cada etapa.
O que realmente faz com que Laravel aplicativos sejam hackeados
Classificados pela frequência com que aparecem em incidentes reais, e não pelo quão interessantes são:
- Saída de depuração exposta.
APP_DEBUG=trueem ambiente de vazamentos de produção variáveis, credenciais de banco de dados e caminhos de arquivo para qualquer pessoa que acione um erro. - Legível
.envou.git/. Raízes de documentos mal configuradas que serve dotfiles entrega seu APP_KEY e credenciais. - PHP, estrutura ou pacotes sem patch com CVEs conhecidos.
- SSH fraco: autenticação de senha, login root habilitado, sem proteção de força bruta.
- Uploads de arquivos inseguros que permitem conteúdo executável em caminhos servidos pela web.
- Injeção nas escotilhas de fuga: SQL bruto sem ligações, sem escape
{!! !!}Saída da lâmina. - Painéis de administração sem MFA e sem limitação de taxa.
O chato é melhor do que o inteligente: se você fechar essas sete portas, estará à frente da grande maioria da produção PHP implantações.
Lista de verificação de proteção do servidor
- SSH: apenas chaves, sem root.Desative a autenticação por senha e login root; use um usuário administrador dedicado. Adicione Fail2ban para banir falhas repetidas. (Um fresco Cipi install aplica exatamente isso por padrão: login root desabilitado, acesso de administrador somente por chave, Fail2ban e UFW habilitados.)
- Negação padrão do firewall. Apenas 22, 80 e 443 deverão responder. Bancos de dados e Valkey/Redis
ouça no localhost - verifique com
ss -tlnp. - TLS em todos os lugares, forçado. Certificados Let's Encrypt gratuitos, HTTP redirecionados para HTTPS
(
cipi ssl installentãocipi ssl force), HSTS habilitado. - Patch de acordo com uma programação, não na memória. Atualizações de segurança autônomas para o sistema operacional; um
mecanismo deliberado para PHP (Cipi executa uma verificação semanal de patch de segurança PHP -
cipi php upgrade). - Reduzir impressões digitais:
expose_php = Off,server_tokens off. - Isole os aplicativos uns dos outros. Usuários do sistema por aplicativo e pools PHP-FPM limitam a explosão raio quando um aplicativo é comprometido — Cipi provisiona esse isolamento por aplicativo automaticamente.
- Remova as sobras: arquivos phpinfo, Adminer, subdomínios obsoletos apontando para antigos caixas.
Lista de verificação de proteção de aplicativos
APP_ENV=production,APP_DEBUG=false- inegociável.- Forçar HTTPS no nível do aplicativo também (proxies confiáveis + esquema forçado), então URLs assinados e os cookies se comportam.
- Valide tudo com Solicitações de Formulário; nunca confie na entrada do cliente, incluindo cabeçalhos e nomes de arquivos.
- Guardas designados em massa: explícito
$fillableem cada modelo. - Autorizar com políticas em todas as rotas que tocam os dados de outra pessoa; adicionar
Route::can()/ middleware, not ad-hoc ifs. - Limite de taxa login, registro, redefinição de senha e APIs públicas com Laravel's TaxaLimiter.
- Sinalizadores de sessão e cookies:
secure,http_only,same_siteconfigurado emconfig/session.php. - Fique por dentro das ligações do Eloquent. Se você deve usar
whereRaw, passe ligações - nunca interpole a entrada em strings SQL. - Escape por padrão. Tratar
{!! !!}como um cheiro de código que requer justificativa e higienização. - Uploads de arquivos: validar tipo e tamanho MIME, armazenar fora
public/com nomes aleatórios, veiculados por meio de URLs assinados ou de um controlador. - Cabeçalhos de segurança: X-Frame-Options, X-Content-Type-Options, Referrer-Policy e um CSP apropriado ao seu front-end.
Dependências e cadeia de suprimentos
Seu aplicativo é principalmente código de outras pessoas, então trate a higiene de dependências como um controle de segurança de primeira classe:
- Confirmar arquivos de bloqueio (
composer.lock,package-lock.json) então a produção executa exatamente o que você testou. - Corre
composer auditem CI em cada solicitação pull - falha na compilação quando uma dependência tem um aviso conhecido. (Conectar isso em um pipeline leva cinco minutos – veja nosso CI/CD guia.) - Automatize PRs de atualização com Renovate ou Dependabot; pequenos solavancos semanais superados trimestralmente mega-atualizações.
- Procure configurações incorretas específicas de Laravel. Ponto de verificação é um open-source Laravel scanner de segurança que você pode adicionar ao seu conjunto de ferramentas para detectar erros no nível da estrutura antes que eles navio.
- Digitalize de fora também. Uma plataforma como Hackly é executado recorrentemente verificações de vulnerabilidade em sua superfície pública — a visão que o invasor tem de sua pilha, de acordo com um cronograma.
Segredos e proteção de dados
.envnunca entra no Git. Distribua segredos por meio de suas ferramentas de implantação, não o repositório.- Usuários de banco de dados com privilégios mínimos: um usuário por aplicativo, não
GRANT ALLligado*.*. (Cipi cria um banco de dados e usuário dedicados por aplicativo.) - Criptografe a configuração da infraestrutura em repouso. Cipi armazena a configuração do servidor e do aplicativo criptografado com AES-256 em seu VPS — os metadados da infraestrutura nunca saem da máquina.
- Escopo API tokens (habilidades do Sanctum) e alternar credenciais quando as pessoas saem.
- Torne anônimos os dados de produção antes de compartilhá-los. Nunca entregue dumps de produção para teste ou desenvolvedores externos brutos; o Cipi Agente O pacote Laravel inclui um anonimizador de banco de dados exatamente para esse fluxo de trabalho.
- Backups criptografados e externos — e teste o caminho de restauração (veja o guia de implantação para o backup configuração).
Detecção, monitoramento e resposta
- Centralize as exceções. Um aumento na casa dos 500 costuma ser o primeiro sinal de sondagem. Google dá a você um self-hosted rastreador de exceções, para que cargas de erro (que geralmente contêm dados do usuário) permaneçam em sua infraestrutura.
- Verificações de integridade + alertas de tempo de atividade. Cipi 5 envia verificações de integridade do aplicativo; emparelhe-os com um monitor de tempo de atividade externo para a visão externa.
- Observe os registros de autenticação. Relatórios Fail2ban e
lastbdizer quem está batendo. - Tenha um plano de resposta antes de precisar dele: isole a caixa, gire cada segredo
(incluindo implicações de APP_KEY para dados criptografados), restauração de um instantâneo em bom estado
(
cipi backup runcobre instantâneos agendados; Cipi 5 adiciona instantâneos de banco de dados pré-implantação), identifique o ponto de entrada e, em seguida, escreva a autópsia. Nunca remende e ore em um live comprometido anfitrião.
Coloque isso em prática com Cipi
Cipi é o open-source implantar CLI gratuito mencionado ao longo deste guia: um comando transforma um novo Ubuntu VPS em um servidor de produção reforçado para Laravel — Nginx, PHP-FPM ou Octane, MariaDB ou PostgreSQL, filas, agendador, SSL e implantações Git com tempo de inatividade zero incluídas.
Perguntas frequentes
Laravel é seguro por padrão?
A estrutura fornece padrões fortes: proteção CSRF, senhas com hash, proteção de injeção de SQL por meio do construtor de consultas e saída de escape do Blade. A maioria dos incidentes do mundo real vem de erros de implantação – modo de depuração ativado, arquivos .env expostos, PHP sem patch, SSH fraco – e é por isso que a proteção do servidor é tão importante quanto o código do aplicativo.
Qual é a configuração de segurança Laravel mais importante?
APP_DEBUG=false em produção. Uma página de depuração exposta vaza variáveis de ambiente, credenciais e caminhos, e ainda é a violação Laravel autoinfligida mais comum. Verifique agora e automatize a verificação em seu pipeline de implantação.
Com que frequência devo atualizar PHP e minhas dependências?
Aplique patches de segurança assim que possível – automatize a detecção com auditoria composer em CI e Renovate ou Dependabot para PRs de atualização. Para o próprio PHP, use um mecanismo gerenciado em vez de memória: Cipi, por exemplo, verifica semanalmente e aplica patches de segurança PHP por meio da atualização cipi php.
Preciso de um WAF para um aplicativo Laravel?
Um WAF é uma camada extra útil, não um substituto para o básico. Feche primeiro os fundamentos: TLS, software corrigido, SSH reforçado, entrada validada, limitação de taxa. Depois disso, um WAF de nível CDN adiciona defesa profunda contra ataques automatizados.
O que devo fazer primeiro se suspeitar de um servidor comprometido?
Isole a máquina do tráfego, alterne todos os segredos que ela contém (senhas de banco de dados, tokens API, APP_KEY), restaure o aplicativo em um servidor limpo a partir de um backup em bom estado e só então investigue o ponto de entrada. Corrigir o host comprometido ao vivo e esperar é como os invasores mantêm sua posição.