5 dicas para proteger o PHP Laravel
DeveloperSteve Coochin
21 de abril de 2022
0 minutos de leituraO 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.

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:
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.

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.

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

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.

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.

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.

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

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.



