Magento 2 mais seguro com o webroot correto

Esse é um requerimento de segurança que normalmente não é revisado, mas é muito importante, webroot nada mais é do que a pasta pública raiz do seu servidor, caso esteja utilizando a pasta errada vou te mostrar como corrigir.

Magento 2 mais seguro com o webroot correto

Essa verificação leva apenas 1 minuto e a correção é muito rápida também, isso pode te poupar muita dor de cabeça, além de dar mais liberdade para os desenvolvedores manipularem arquivos na raiz do projeto.

Risco causados

Quando você utiliza a pasta raiz do seu Magento 2 como webroot você acaba expondo mais arquivos e pastas que o necessário, isso por si só já traz mais riscos para a sua loja, fora que tem vários devs que deixam arquivos na raiz da instalação como por exemplo:

  • Arquivos executáveis
  • Backups
  • Link simbólicos

Como verificar

1º passo

Clique com o botão direito na página da sua loja e clique em ver código fonte.

2º passo

Busque por /pub/

Se o resultado for zero, a sua loja está com o webroot correto, parabéns! ?

Como corrigir?

Você primeiro precisa corrigir o apontamento da webroot no seu servidor, caso você utilize uma hospedagem Paas como Cloudways, você consegue alterar facilmente via painel:

Painel Cloudways

NGINX

Se você utiliza NGINX, você pode usar esse exemplo para fazer a modificação em seu servidor.

    # /etc/nginx/sites-available/magento

    upstream fastcgi_backend {
         server  unix:/run/php/php7.4-fpm.sock;
     }

     server {

              listen 80;
              server_name 192.168.33.10;
              set $MAGE_ROOT /var/www/html/magento2ce;
              include /var/www/html/magento2ce/nginx.conf.sample;
    }
Configuração de exemplo NGINX

Apache

Se você utiliza Apache, pode fazer dessa maneira.

 <VirtualHost *:80>

         ServerAdmin webmaster@localhost
         DocumentRoot /var/www/html/magento2ce/pub

         ErrorLog ${APACHE_LOG_DIR}/error.log
         CustomLog ${APACHE_LOG_DIR}/access.log combined

         <Directory "/var/www/html">
                     AllowOverride all
         </Directory>
 </VirtualHost>
Configuração de exemplo Apache

Não se esqueça de reiniciar o NGINX ou Apache!

env.php

Verifique se você configurou corretamente seu arquivo app/etc/env.php, ele deve conter esse parâmetro:

'directories' => [
    'document_root_is_pub' => true
]
Magento 2 configurando a pasta pub como webroot no env.php

Finalizando

Com tudo configurado você só precisa recompilar a loja, limpar os caches e tentar acessar um das pastas da raiz do Magento como por exemplo a pasta setup, se você receber erro 404 ou erro de permissão, então está tudo certo! ?