Skip to main content

5 dicas para proteger o PHP Laravel

Escrito por
Headshot of DeveloperSteve Coochin

DeveloperSteve Coochin

feature laravel tips

21 de abril de 2022

0 minutos de leitura

O Laravel, feito para desenvolvedores, costuma ser descrito como “o framework PHP para artesãos da web”. É um dos frameworks mais usados no ecossistema PHP, com uma comunidade ampla e diversas ramificações dedicadas ao desenvolvimento de aplicações de todos os tipos.

Lançado em 2011, na versão 1.0, o Laravel hoje está por trás dos sites de empresas globais como 9GAG, BBC e Pfizer. Ao longo dos anos, o projeto principal cresceu bastante e se dividiu em alguns componentes diferentes, amplamente usados em sites e plataformas:

  • Laravel/core - Este é o principal ponto de referência para boa parte da comunidade e o melhor lugar para começar para quem quer conhecer o Laravel. O projeto reúne tudo de que você precisa para colocar um site no ar rapidamente, com tutoriais e documentação fáceis de acompanhar. O PHP Composer registra, em média, mais de 16.000 instalações em 24 horas do Laravel/core.

  • Laravel/framework - Oferece os recursos centrais do Laravel como framework e é usado como dependência por muitos outros projetos. Desde que foi listado no PHP Composer, em 2013, já teve mais de 183 milhões de instalações, com uma média de mais de 86.000 instalações por dia. Mais de um milhão de plataformas e produtos de código aberto o utilizam como dependência.

  • Laravel Sails - Baseado em uma CLI leve, foi projetado especificamente para funcionar com o ambiente de desenvolvimento em contêineres Docker padrão do Laravel. O Sails permite criar aplicações com Laravel usando contêineres, com rapidez e escalabilidade.

Como começar a usar o PHP Laravel

Começar a usar o Laravel é rápido e fácil, especialmente com o gerenciador de pacotes do PHP, o PHP Composer. Para iniciar um projeto, basta executar composer create-project Laravel/Laravel example-app na linha de comando. Depois, você pode usar o servidor integrado ao framework Laravel: acesse o diretório recém-criado com cd example-app e execute php artisan serve. Isso inicia um servidor local, que, por padrão, fica disponível em 127.0.0.1:8000.

Página inicial escura do Laravel, com o logotipo do Laravel e links para Documentation, Laracasts, Laravel News e Vibrant Ecosystem.

Uma das coisas de que gosto no Laravel é como sua abordagem voltada para desenvolvedores é bem pensada: as ferramentas mais usadas por quem desenvolve já vêm integradas. O Laravel pode criar automaticamente um novo repositório git pela linha de comando usando a --git flag; você também pode especificar uma branch com a flag --branch="main".

5 maneiras de proteger o Laravel

Confira algumas maneiras de proteger suas instalações do Laravel e ajudar a manter os usuários seguros.

1. Configuração do framework

Configurar corretamente — e desde o início — cada etapa do desenvolvimento de uma aplicação é essencial para qualquer projeto. Com o Laravel, você pode definir as configurações de desenvolvimento e produção no arquivo .env. Esse arquivo nunca deve ficar acessível publicamente, pois contém informações de configuração da aplicação.

Em produção, desative o modo de depuração. Para isso, configure APP_DEBUG como false. Embora esse modo seja útil durante o desenvolvimento, desativá-lo em produção impede que erros, caminhos ou informações críticas do sistema sejam expostos ao público.

Também é importante garantir que uma chave de aplicação tenha sido gerada para sua instalação do Laravel. Ela é usada na criptografia simétrica de cookies, URLs assinadas de sessão e tokens de redefinição de senha. Para configurá-la, use key:generate, normalmente por meio dos comandos do artisan (ou php artisan key:generate, dependendo da configuração do Laravel).

2. Prevenção contra injeção de SQL

Uma das maiores vantagens do Laravel é o uso do ORM Eloquent no núcleo do framework. Ele usa vinculação PDO para proteger contra injeção de SQL durante a interação com o banco de dados conectado.

Um ORM é um software que facilita o gerenciamento de registros de banco de dados ao representar os dados como objetos. Ele funciona como uma camada de abstração sobre o mecanismo de banco de dados usado para armazenar os dados de uma aplicação.

Como camada adicional ao Eloquent, especialmente ao lidar com entradas de usuários, o PHP puro pode oferecer mais recursos de sanitização. Sanitização nunca é demais (a menos que prejudique o carregamento da página e o desempenho). Saiba mais na nossa publicação sobre as 5 principais maneiras de prevenir a injeção de SQL com PHP.

3. Cookies e gerenciamento de sessões

Proteger as sessões e os cookies dos usuários é uma ótima maneira de manter os dados dos usuários finais o mais seguros possível. Ao fazer isso no Laravel, alguns pontos merecem atenção.

Ative HttpOnly na sessão do Laravel da sua aplicação. Você pode fazer isso no arquivo config/session.php. Essa configuração adiciona uma camada de segurança e impede que os cookies de sessão fiquem disponíveis no JavaScript. Defina um tempo limite curto para a inatividade da sessão, para que o usuário seja desconectado automaticamente.

A configuração do domínio do cookie também fica no arquivo config.session.php. Ela deve ser definida como Null, a menos que você use subdomínios. Definir o atributo de domínio do cookie impõe same origin, permitindo que apenas o domínio base defina o cookie. Também é recomendável definir o atributo SameSite do cookie como lax ou strict para restringir os cookies à origem primária ou ao mesmo site.

A opção de configuração mais importante no arquivo config/session.php é HTTPS only. Ativá-la protege contra ataques MITM (man-in-the-middle) e garante que apenas URLs HTTPS seguras sejam permitidas.

4. Faça upload de arquivos com segurança

Sempre valide o tipo de arquivo usando MimeTypes:

$request->validate([
    'photo' => 'file|size:100|mimes:jpg,bmp,png'
]);

Além disso:

  • Não confie que usuários informem caminhos ou nomes de arquivos. Use sempre strings de hash ou nomes gerados pelo sistema.

  • Evite XML e arquivos ZIP, se possível, ou processe-os com segurança.

  • Use basename() para remover tentativas de navegação para diretórios não permitidos.

5. Use ferramentas de SAST e análise de composição de software

Essas ferramentas ajudam a manter seu código e o uso de pacotes de código aberto o mais seguros possível, analisando o código e os manifestos dos pacotes. Mais importante ainda, elas permitem configurar análises contínuas para que você receba alertas quando uma versão específica de um pacote tiver uma vulnerabilidade identificada.

Leia nosso guia para combinar SAST e análise de composição de software e ampliar a cobertura de segurança do seu projeto.

Análise de composição de software (SCA)

Ferramentas de SCA — como o Snyk Open Source — são especialmente úteis quando você usa gerenciadores de pacotes de código aberto, como o PHP Composer. Uma ferramenta de SCA pode analisar o manifesto do Composer para verificar se versões específicas de pacotes de código aberto têm vulnerabilidades conhecidas.

Banco de dados de vulnerabilidades da Snyk exibindo uma injeção de comandos crítica que afeta versões anteriores à 5.8.17 do Laravel/framework.
O Snyk Open Source prioriza vulnerabilidades para que você chegue mais rápido aos problemas críticos.

Uma boa ferramenta de SCA analisa continuamente seus projetos, bibliotecas de código aberto e dependências em busca de vulnerabilidades. Ano após ano, vemos um aumento de caminhos vulneráveis em diferentes ecossistemas. A identificação antecipada pode alertar você sobre ameaças recém-descobertas, como a recente vulnerabilidade no PHP dompdf.

Testes de segurança estática de aplicações (SAST)

Ferramentas de SAST — como o Snyk Code — ajudam a identificar possíveis vulnerabilidades no código. Assim, você pode investigar os trechos de código sinalizados.

A análise do Snyk Code para PHP é especialmente útil porque, além de destacar pontos de atenção, ajuda você a percorrer funções, objetos e frameworks para investigar mais a fundo.

Visualização do fluxo de dados do Snyk Code destacando o uso inseguro de hash MD5 no código Filesystem.php do Laravel.
A visualização de fluxo de dados do Snyk Code destaca áreas potencialmente inseguras no seu código.

Com exemplos reais da vulnerabilidade em questão, o Snyk Code também sugere possíveis etapas para corrigi-la.

Visualização da análise de correção do Snyk Code para CWE-916, com detalhes sobre a vulnerabilidade no hash de senhas, orientações de prevenção e exemplos de correções em PHP.
A visualização de análise Fix no Snyk Code fornece detalhes sobre vulnerabilidades e sugere etapas para corrigi-las.

Analise seus projetos Laravel mais rápido do que se diz “PHP artisan”

Analisar seus projetos Laravel com o Snyk é rápido e fácil. Para começar, crie uma conta gratuita no Snyk e siga as instruções de login para a plataforma que preferir. Depois de criar sua conta, há algumas maneiras de começar a analisar projetos.

Conecte seu repositório

Esta é, de longe, minha maneira favorita (e a mais fácil) de receber alertas contínuos sobre novas vulnerabilidades. No painel do Snyk, clique em Add Project, no canto superior direito, e selecione o repositório desejado. Se ele não aparecer no menu rápido, clique em Other e escolha a plataforma na página de integrações.

Página de integrações da Snyk exibindo integrações de controle de versão com GitHub, GitHub Enterprise, GitLab, Bitbucket e Azure Repos

Depois de seguir as etapas para conectar sua conta, você poderá conectar o repositório do projeto na página de configuração. Marque a caixa correspondente ao tipo de repositório e clique em Add selected repository.

Tela de seleção de repositórios do GitHub no Snyk, com a busca por “laravel” e o repositório laravel selecionado para teste.

Instale a CLI do Snyk

A CLI do Snyk permite incorporar ferramentas de SCA e SAST diretamente à linha de comando com apenas algumas linhas de código. Você pode fazer isso pelo npm ou Yarn, com executáveis independentes ou instaladores específicos para cada sistema operacional.

Depois de instalar a CLI do Snyk, verifique a instalação executando snyk –version para confirmar que está tudo funcionando. Em seguida, conecte a CLI do Snyk à sua conta executando snyk auth na linha de comando. A página de autenticação deve abrir no navegador padrão.

Página de autenticação da Snyk CLI, com o título “Authenticate for CLI” e o botão Authenticate

Clique em Authenticate para começar a analisar um projeto com meu comando favorito da CLI: snyk test.

Saída do terminal mostrando um teste do Snyk em um app de exemplo do Laravel, sem caminhos vulneráveis encontrados e com detalhes do pacote npm.

Integrações com IDEs

Essas ferramentas de análise também podem ser integradas à sua IDE, com verificações e análises em tempo real enquanto você desenvolve uma aplicação. Por exemplo, a integração do Snyk com o VS Code analisa pacotes e dependências em tempo real. Saiba como começar e confira como a integração com o Visual Studio Code funciona em tempo real.

Lembre-se de contribuir com projetos de código aberto

Lembre-se sempre de contribuir com os projetos de código aberto que puder, principalmente se você os usa com frequência. A comunidade Laravel cresceu bastante ao longo dos anos, acompanhando a expansão dos recursos e da adoção do framework, e isso ajudou a construir o projeto que conhecemos hoje.

Comece a resolver desafios de capture the flag

Aprenda a resolver desafios de capture the flag assistindo sob demanda ao nosso workshop virtual introdutório.

Leia mais

blog feature snyk container custom base recommendations
Blog

Conheça o Evo Agentic AppSec: segurança que acompanha o ritmo do desenvolvimento com IA

O desenvolvimento impulsionado por IA está avançando mais rápido do que os fluxos de trabalho de segurança tradicionais. O AppSec agentivo da Snyk usa agentes de segurança para encontrar, corrigir e verificar vulnerabilidades continuamente, enquanto as pessoas definem os critérios.

blog feature ai violet
Blog

VulnBump: agentes de IA conseguem corrigir dependências vulneráveis sem quebrar o build?

O VulnBump testa agentes de IA em 307 atualizações reais de dependências. Uma correção só é considerada válida se eliminar a vulnerabilidade e mantiver o build e os testes funcionando.

Blog

Modelos de ponta encontraram as vulnerabilidades. Só o atacante encontrou as cadeias.

A análise estática encontrou as falhas, mas só os testes de ataque em aplicações ativas provaram como elas poderiam ser encadeadas para causar invasões. Uma comparação entre Evo COS, Claude Security e Claude Code Security.