Si le DocumentRoot de votre GLPI ne pointe pas vers le dossier public, vos données sont en danger. Il s’agit de la configuration de sécurité la plus importante de GLPI en production.
Pourquoi le dossier public existe
GLPI 10+ a séparé les fichiers web (accessibles par le navigateur) des fichiers internes (config, données, logique). Le dossier public ne contient que :
- index.php (routeur principal)
- .htaccess (règles Apache)
- Fichiers statiques (CSS, JS, images)
Tout le reste (configuration de la base de données, classes PHP, données sensibles) reste en dehors du 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;
}
}Vérification
Après la configuration, testez en accédant à des URL qui ne devraient PAS fonctionner :
/config/config_db.php→ doit retourner 404/src/→ doit retourner 404/vendor/→ doit retourner 404/install/install.php→ doit retourner 404 (après suppression)
Si l’une d’elles retourne du contenu, le DocumentRoot est mal configuré.