/ / Comment détecter le support de .htaccess en PHP sur un serveur Apache (et d’autres serveurs) - php, apache, .htaccess, nginx, lighttpd

Comment détecter le support de .htaccess en PHP sur le serveur Apache (et les autres serveurs) - php, apache, .htaccess, nginx, lighttpd

Pour des raisons de sécurité, je dois vérifier si un répertoire n'est pas lisible par un client, c'est à dire. que le serveur Apache supporte le .htaccess (non AllowOverride None dans les fichiers de configuration apache). Ceci est très important car j'ai récemment découvert qu'un grand nombre de produits et de frameworks ne vérifient pas cela (y compris Zend et Symphony). Est-il possible de vérifier cela en utilisant uniquement PHP?

BTW, corrigez-moi si je me trompe, mais il semble que d'autres serveurs (nginx ou lighttpd) ne prennent pas en charge .htaccess. Dans ces cas, comment puis-je vérifier que mon répertoire n'est pas lisible par un client?

Réponses:

1 pour la réponse № 1

Vous pourriez utiliser SetEnvIf dans htaccess pour définir une variable, puis y accéderà partir de PHP. Cela vous dira si htaccess est utilisé (et si le module SetEnvIf est en cours d'exécution). Mais il ne vous en dira pas beaucoup plus, il ne vous dira pas si mod_rewrite est disponible, par exemple. Pour savoir quels modules sont en cours d'exécution, vous pouvez vérifier la sortie de phpinfo par programmation.


1 pour la réponse № 2

Peut-être que vous pouvez télécharger un fichier .htaccess avec un tel contenu:

Options -Indexes

à votre racine, puis essayez d'accéder aux répertoires en question, si elles ne sont pas accessibles, cela fonctionne.

Sinon, votre hôte devrait pouvoir vous aider facilement, peu importe la situation. la plate-forme sur laquelle vous êtes.


1 pour la réponse № 3

Vous pouvez vérifier les fichiers par is_readable(".htaccess").

print_r(apache_get_modules()) vous montrera les modules Apache chargés.