Trabajo con la administración de sistemas en una universidad y me topé con algo que probablemente es común, pero que me sorprendió bastante.
Todos los directorios public_html y las áreas web se almacenan en afs, con permisos de lectura para los servidores web. Dado que los usuarios pueden tener scripts php en su public_html, esto significa que pueden acceder a los archivos de los demás desde php (¡y los archivos web principales!).
Esto no solo hace que cualquier protección de contraseña .htaccess sea completamente inútil, sino que también permite a los usuarios leer archivos fuente php que contienen contraseñas de bases de datos mysql e información confidencial similar. O si encuentran que otras personas tienen directorios en los que los servidores web tienen acceso de escritura (por ejemplo, para registros personales o para guardar datos de formularios enviados) pueden almacenar archivos en esas cuentas.
Un simple ejemplo:
<?
header("Content-type: text/plain");
print file_get_contents("/afs/example.com/home/smith/public_html/.htpasswd");
?>
¿Es este un problema común? ¿Y cómo lo resuelves normalmente?
ACTUALIZAR:
Gracias por el aporte. Desafortunadamente, parece que no hay una respuesta simple. En un gran entorno compartido como este, los usuarios probablemente no deberían tener esta opción. El mejor enfoque que puedo pensar es establecer "open_basedir" en la configuración principal para todos los directorios "public_html", ejecutar suphp y solo permitir php limpio (sin scripts cgi, ejecutando comandos externos con backticks, etc.).
Sin embargo, cambiar la política de esta manera rompería muchas cosas y posiblemente haría que los usuarios agarren sus horcas y nos persigan ... Lo discutiré con mis colegas y lo actualizaré aquí si tomamos una decisión sobre cómo cambiar la configuración.
open_basedirsolución por debajo de la producción compartida sistemas de alojamiento, pero dividido cada uno en su propio host virtual - No estoy seguro de si funciona para directorios individuales ...