Do not speak Portuguese? Translate this site with Google or Bing Translator
Perigo com o arquivo .env do Laravel

Posted on: March 10, 2023 10:39 AM

Posted by: Renato

Categories: Laravel developer Dicas

Views: 1995

O grande perigo com o arquivo .env do Laravel

The Big Danger with Laravel’s .env File

O Laravel é um dos frameworks de aplicações web mais populares do mundo. Ele oferece muitos recursos e ferramentas para tornar o desenvolvimento mais rápido e fácil. No entanto, um dos recursos mais úteis, o arquivo .env, também pode ser um dos maiores perigos se não for usado corretamente. Neste artigo, exploraremos os riscos associados ao arquivo .env e como mitigá-los.

O que é o arquivo .env?

O arquivo .env é um arquivo de configuração usado pelo Laravel para armazenar configurações específicas do ambiente. Ele contém pares chave-valor que definem variáveis ​​como credenciais de conexão de banco de dados, chaves de API e outras informações confidenciais. O arquivo está localizado no diretório raiz de um projeto Laravel e seu conteúdo é carregado nas superglobais $_ENV e $_SERVER quando o aplicativo é iniciado.

Por que o arquivo .env é perigoso?

O arquivo .env é perigoso porque contém informações confidenciais que, se expostas, podem levar a graves violações de segurança. Se um invasor obtiver acesso ao arquivo, poderá obter credenciais para acessar bancos de dados, serviços e outros recursos. Além disso, o arquivo .env costuma ser ignorado por desenvolvedores e administradores de sistema, levando a cenários em que fica exposto ou armazenado em sistemas de controle de versão como GitHub, Bitbucket e GitLab, onde pode ser facilmente acessado por qualquer pessoa.

Outra razão pela qual o arquivo .env é perigoso é que ele pode ser acessado por qualquer pessoa que tenha acesso ao servidor executando o aplicativo Laravel. Isso inclui outros usuários no mesmo servidor, administradores de sistema e atores potencialmente mal-intencionados. Se o servidor for comprometido, o invasor pode obter o arquivo .env, o que pode levar a graves violações de dados.

Como mitigar os riscos associados ao arquivo .env?

Para atenuar os riscos associados ao arquivo .env, existem várias práticas recomendadas que os desenvolvedores e administradores de sistema devem seguir.

Use senhas fortes

Uma das coisas mais importantes que você pode fazer para proteger seu arquivo .env é usar senhas fortes. As senhas devem ser complexas e difíceis de adivinhar, com um comprimento mínimo de 12 caracteres. Além disso, você nunca deve reutilizar senhas em diferentes sistemas ou serviços.

Armazene o arquivo .env fora da raiz do documento

Outra forma de proteger seu arquivo .env é armazená-lo fora da raiz do documento. Ao fazer isso, o arquivo não é acessível a partir da web e somente o próprio aplicativo pode acessá-lo. Isso garante que, mesmo que um invasor obtenha acesso ao servidor da Web, ele não possa acessar o arquivo .env.

Etapa 1: criar um novo diretório

Crie um novo diretório fora da raiz do documento para armazenar o .envarquivo. Por exemplo, você pode criar um diretório chamado configno diretório raiz do seu servidor.

Etapa 2: mover o arquivo .env

Mova o .envarquivo do diretório raiz do seu aplicativo para o diretório recém-criado. Você pode fazer isso usando a linha de comando ou usando um cliente FTP.

Etapa 3: Modifique o arquivo bootstrap/app.php

Abra o bootstrap/app.phparquivo e adicione o seguinte código na parte superior do arquivo:

 

Dotenv::load(__DIR__.'/../config');

 

Este código diz ao Laravel para procurar o .envarquivo no configdiretório em vez do diretório raiz.

Etapa 4: atualizar o caminho do arquivo .env no arquivo .env.example

Abra o .env.examplearquivo e atualize a APP_ENVvariável com o seguinte código:

APP_ENV=production

Este código informa ao Laravel que o aplicativo está sendo executado em um ambiente de produção. Além disso, atualize a APP_DEBUGvariável com o seguinte código:

APP_DEBUG=false

Este código diz ao Laravel para desativar o modo de depuração no ambiente de produção.

Etapa 5: atualizar o caminho do arquivo .env na configuração do servidor

Atualize a configuração do servidor para apontar para o novo local do .envarquivo. Por exemplo, se você estiver usando o Apache, poderá adicionar o seguinte código à sua configuração de host virtual:

SetEnv ENVIRONMENT prod
SetEnv CONFIG_DIR /path/to/config

Este código define as variáveis ​​de ambiente ENVIRONMENTCONFIG_DIRpara informar ao Laravel que o aplicativo está sendo executado em um ambiente de produção e o .envarquivo está localizado no configdiretório.

Etapa 6: testar o aplicativo

Teste o aplicativo para certificar-se de que está funcionando corretamente. Você também pode verificar os logs do servidor em busca de erros.

Restringir o acesso ao arquivo .env

Você também pode restringir o acesso ao arquivo .env alterando suas permissões de arquivo. Em sistemas baseados em Linux e Unix, você pode definir as permissões de arquivo para 600, o que significa que apenas o proprietário do arquivo pode ler e gravar nele. Além disso, você pode usar um arquivo .htaccess para negar o acesso ao arquivo .env da web.

Usar variáveis ​​de ambiente

Em vez de armazenar informações confidenciais no arquivo .env, você pode usar variáveis ​​de ambiente. As variáveis ​​de ambiente são armazenadas no ambiente do servidor, tornando-as mais seguras do que armazená-las em um arquivo. Além disso, você pode usar uma biblioteca PHP dotenv para carregar as variáveis ​​de ambiente em seu aplicativo Laravel.

Use um gerenciador de senhas

Um gerenciador de senhas é uma ferramenta que ajuda você a armazenar e gerenciar suas senhas com segurança. Em vez de lembrar todas as suas senhas ou anotá-las, você pode usar um gerenciador de senhas para gerar e armazenar senhas complexas para você. Além disso, eles podem ajudá-lo a gerenciar senhas em diferentes sistemas e serviços.

Aqui estão as etapas para usar um gerenciador de senhas:

  1. Escolha um gerenciador de senhas: existem muitos gerenciadores de senhas disponíveis, como LastPass, Dashlane e 1Password. Escolha um que se adapte às suas necessidades e orçamento.
  2. Instale o gerenciador de senhas: Depois de escolher um gerenciador de senhas, instale-o em seu dispositivo. A maioria dos gerenciadores de senhas está disponível como extensões de navegador ou aplicativos móveis.
  3. Crie uma senha mestra: seu gerenciador de senhas exigirá que você crie uma senha mestra. Esta é a única senha que você precisará lembrar, portanto, torne-a forte e complexa.
  4. Adicione suas senhas: Depois de criar sua senha mestra, comece a adicionar suas senhas ao gerenciador de senhas. Você pode importar senhas existentes ou criar novas. Seu gerenciador de senhas gerará senhas fortes e exclusivas para cada conta.
  5. Use suas senhas: depois que suas senhas forem adicionadas ao gerenciador de senhas, você poderá usá-las para fazer login em suas contas. A maioria dos gerenciadores de senhas preencherá automaticamente seu nome de usuário e senha para você.
  6. Sincronize suas senhas: se você usa vários dispositivos, certifique-se de sincronizar suas senhas entre eles. Isso garante que você tenha acesso às suas senhas onde quer que vá.
  7. Proteja seu gerenciador de senhas: seu gerenciador de senhas é tão seguro quanto sua senha mestra. Certifique-se de manter sua senha mestra segura e nunca a compartilhe com ninguém. Além disso, habilite a autenticação de dois fatores para adicionar uma camada extra de segurança.

Ao usar um gerenciador de senhas, você pode criar e armazenar senhas fortes para todas as suas contas, sem precisar se lembrar de todas. Isso não apenas torna suas contas mais seguras, mas também economiza tempo e esforço.

Conclusão

O arquivo .env é uma ferramenta poderosa no Laravel, mas também pode ser um grande perigo se não for usado corretamente. Armazenar informações confidenciais no arquivo pode levar a graves violações de segurança, e deixá-las expostas pode permitir que invasores obtenham credenciais para acessar bancos de dados, serviços e outros recursos. 

 

Fonte: @soulaimaneyh

https://medium.com/@soulaimaneyh/the-big-danger-with-laravels-env-file-dc17e88ab220


1

Share

Donate to Site


About Author

Renato

Developer

Add a Comment
Comments 0 Comments

No comments yet! Be the first to comment

Blog Search


Categories

OUTROS (16) Variados (109) PHP (133) Laravel (171) Black Hat (3) front-end (29) linux (114) postgresql (39) Docker (28) rest (5) soap (1) webservice (6) October (1) CMS (2) node (7) backend (13) ubuntu (56) devops (25) nodejs (5) npm (3) nvm (1) git (8) firefox (1) react (7) reactnative (5) collections (1) javascript (7) reactjs (8) yarn (0) adb (1) Solid (2) blade (3) models (1) controllers (0) log (1) html (2) hardware (3) aws (14) Transcribe (2) transcription (1) google (4) ibm (1) nuance (1) PHP Swoole (5) mysql (31) macox (4) flutter (1) symfony (1) cor (1) colors (2) homeOffice (2) jobs (3) imagick (2) ec2 (1) sw (1) websocket (2) markdown (1) ckeditor (1) tecnologia (14) faceapp (1) eloquent (14) query (4) sql (40) ddd (3) nginx (9) apache (4) certbot (1) lets-encrypt (3) debian (12) liquid (1) magento (2) ruby (1) LETSENCRYPT (1) Fibonacci (1) wine (1) transaction (1) pendrive (1) boot (1) usb (1) prf (1) policia (2) federal (1) lucena (1) mongodb (4) paypal (1) payment (1) zend (1) vim (4) ciencia (6) js (1) nosql (1) java (1) JasperReports (1) phpjasper (1) covid19 (1) saude (1) athena (1) cinnamon (1) phpunit (2) binaural (1) mysqli (3) database (42) windows (6) vala (1) json (2) oracle (1) mariadb (4) dev (12) webdev (24) s3 (4) storage (1) kitematic (1) gnome (2) web (2) intel (3) piada (1) cron (2) dba (18) lumen (1) ffmpeg (2) android (2) aplicativo (1) fedora (2) shell (4) bash (3) script (3) lider (1) htm (1) csv (1) dropbox (1) db (3) combustivel (2) haru (1) presenter (1) gasolina (1) MeioAmbiente (1) Grunt (1) biologia (1) programming (22) performance (3) brain (1) smartphones (1) telefonia (1) privacidade (1) opensource (3) microg (1) iode (1) ssh (3) zsh (2) terminal (3) dracula (1) spaceship (1) mac (2) idiomas (1) laptop (2) developer (37) api (5) data (1) matematica (1) seguranca (2) 100DaysOfCode (9) hotfix (1) documentation (1) laravelphp (10) RabbitMQ (3) Elasticsearch (1) redis (2) Raspberry (4) Padrao de design (4) JQuery (1) angularjs (4) Dicas (43) Kubernetes (3) vscode (2) backup (1) angular (3) servers (2) pipelines (1) AppSec (1) DevSecOps (4) rust (1) RustLang (1) Mozilla (1) algoritimo (1) sqlite (1) Passport (2) jwt (5) security (2) translate (1) kube (2) iot (1) politica (2) bolsonaro (1) flow (1) podcast (1) Brasil (1) containers (3) traefik (1) networking (1) host (1) POO (2) microservices (2) bug (1) cqrs (1) arquitetura (3) Architecture (4) sail (3) militar (1) artigo (1) economia (1) forcas armadas (1) ffaa (1) autenticacao (2) autorizacao (2) authentication (4) authorization (3) NoCookies (1) wsl (4) memcached (1) macos (2) unix (2) kali-linux (1) linux-tools (5) apple (1) noticias (2) composer (1) rancher (1) k8s (1) escopos (1) orm (1) jenkins (4) github (5) gitlab (3) queue (1) Passwordless (1) sonarqube (1) phpswoole (1) laraveloctane (1) Swoole (1) Swoole (1) octane (1) Structurizr (1) Diagramas (1) c4 (1) c4-models (1) compactar (1) compression (1) messaging (1) restfull (1) eventdrive (1) services (1) http (1) Monolith (1) microservice (1) historia (1) educacao (1) cavalotroia (1) OOD (0) odd (1) chatgpt (1) openai (3) vicuna (1) llama (1) gpt (1) transformers (1) pytorch (1) tensorflow (1) akitando (1) ia (1) nvidia (1) agi (1) guard (1) multiple_authen (2) rpi (1) auth (1) auth (1) livros (2) ElonMusk (2) Oh My Zsh (1) Manjaro (1) BigLinux (2) ArchLinux (1) Migration (1) Error (1) Monitor (1) Filament (1) LaravelFilament (1) replication (1) phpfpm (1) cache (1) vpn (1) l2tp (1) zorin-os (1) optimization (1) scheduling (1) monitoring (2) linkedin (1) community (1) inteligencia-artificial (2) wsl2 (1) maps (1) API_KEY_GOOGLE_MAPS (1) repmgr (1) altadisponibilidade (1) banco (1) modelagemdedados (1) inteligenciadedados (4) governancadedados (1) bancodedados (2) Observability (1) picpay (1) ecommerce (1) Curisidades (1) Samurai (1) KubeCon (1) GitOps (1) Axios (1) Fetch (1) Deepin (1) vue (4) nuxt (1) PKCE (1) Oauth2 (2) webhook (1) TypeScript (1) tailwind (1) gource (2)

New Articles



Get Latest Updates by Email