Je travaille avec l'administration des systèmes dans une université et je suis juste tombé sur quelque chose qui est probablement commun, mais qui a été un choc pour moi.
Tous les répertoires public_html et les zones Web sont stockés sur afs, avec des autorisations de lecture pour les serveurs Web. Étant donné que les utilisateurs sont autorisés à avoir des scripts php dans leur public_html, cela signifie qu'ils peuvent accéder aux fichiers des autres depuis php (et les principaux fichiers Web!).
Non seulement cela rend toute protection par mot de passe .htaccess complètement inutile, mais cela permet également aux utilisateurs de lire des fichiers source php contenant des mots de passe de base de données mysql et des informations sensibles similaires. Ou s'ils découvrent que d'autres personnes ont des répertoires où les serveurs Web ont un accès en écriture (par exemple pour les journaux personnels ou pour enregistrer les données de formulaire soumises), ils peuvent stocker des fichiers dans ces comptes.
Un exemple simple:
<?
header("Content-type: text/plain");
print file_get_contents("/afs/example.com/home/smith/public_html/.htpasswd");
?>
Est-ce un problème courant? Et comment le résolvez-vous généralement?
METTRE À JOUR:
Merci pour la contribution. Malheureusement, il semble qu'il n'y ait pas de réponse simple. Dans un grand environnement partagé comme celui-ci, les utilisateurs ne devraient probablement pas avoir autant de choix. La meilleure approche à laquelle je peux penser est de définir "open_basedir" dans la configuration principale pour tous les répertoires "public_html", d'exécuter suphp et de n'autoriser que le php propre (pas de scripts cgi, exécution de commandes externes avec des astuces, etc.).
Changer la politique comme ça casserait beaucoup de choses cependant, et inciterait très probablement les utilisateurs à saisir leur fourche et à nous poursuivre ... J'en discuterai avec mes collègues et je mettrai à jour ici si nous décidons comment changer la configuration.
open_basedir
solution ci-dessous sur les systèmes d'hébergement partagé de production, mais nous avons divisé tout le monde en leur propre vhost - Je ne sais pas si cela fonctionne pour les répertoires uniques ...