Se o DocumentRoot do seu GLPI não aponta para a pasta public, os seus dados estão em risco. Esta é a configuração de segurança mais importante do GLPI em produção.
Por que existe a pasta public
O GLPI 10+ separou os ficheiros web (acessíveis pelo browser) dos ficheiros internos (config, dados, lógica). A pasta public contém apenas:
- index.php (router principal)
- .htaccess (regras Apache)
- Ficheiros estáticos (CSS, JS, imagens)
Todo o restante (configuração de base de dados, 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 acedendo a URLs que NÃO devem funcionar:
/config/config_db.php→ deve devolver 404/src/→ deve devolver 404/vendor/→ deve devolver 404/install/install.php→ deve devolver 404 (após remoção)
Se alguma devolver conteúdo, o DocumentRoot está errado.