Se o DocumentRoot do seu GLPI não aponta para a pasta public, seus dados estão em risco. Esta é a configuração de segurança mais importante do GLPI em produção.
Por que a pasta public existe
O GLPI 10+ separou os arquivos web (acessíveis pelo navegador) dos arquivos internos (config, dados, lógica). A pasta public contém apenas:
- index.php (roteador principal)
- .htaccess (regras Apache)
- Arquivos estáticos (CSS, JS, imagens)
Todo o restante (configuração de banco, classes PHP, dados sensíveis) fica fora do webroot.
Apache
<VirtualHost *:443>
ServerName glpi.suaempresa.com
DocumentRoot /var/www/glpi/public
<Directory /var/www/glpi/public>
AllowOverride All
Require all granted
</Directory>
SSLEngine On
SSLCertificateFile /etc/ssl/certs/glpi.crt
SSLCertificateKeyFile /etc/ssl/private/glpi.key
</VirtualHost>Nginx
server {
listen 443 ssl http2;
server_name glpi.suaempresa.com;
root /var/www/glpi/public;
index index.php;
location / {
try_files $uri /index.php$is_args$args;
}
location ~ \.php$ {
fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}Verificação
Após configurar, teste acessando URLs que NÃO devem funcionar:
/config/config_db.php→ deve retornar 404/src/→ deve retornar 404/vendor/→ deve retornar 404/install/install.php→ deve retornar 404 (após remoção)
Se qualquer uma retornar conteúdo, o DocumentRoot está errado.