Instalación como módulo de Apache
Cuando PHP es usado como un módulo de Apache, hereda los
permisos del usuario de Apache (generalmente los del usuario
"nobody")_ Este hecho representa varios impactos sobre la seguridad y
las autorizaciones_ Por ejemplo, si está usando PHP para
acceder a una base de datos, a menos que tal base de datos disponga de
un control de acceso propio, usted tendrá que hacer que la base
de datos sea asequible por el usuario "nobody"_ Esto quiere decir que
un script malicioso podría tener acceso y modificar la base de
datos, incluso sin un nombre de usuario y contraseña_ Es
completamente posible que un archivador automatizado de documentos web
pudiera toparse con la página web de administración de
una base de datos, y eliminar todas sus bases de datos_ Usted puede
protegerse de este tipo de situaciones mediante mecanismos de
autorización de Apache, o puede diseñar su propio modelo
de acceso usando LDAP, archivos _htaccess, etc_ e incluir ese
código como parte de sus scripts PHP_
Con frecuencia, una vez la seguridad se ha establecido en un punto en
donde el usuario de PHP (en este caso, el usuario de apache) tiene
asociada una muy leve capacidad de riesgo, se descubre que PHP se
encuentra ahora imposibilitado de escribir archivos en los directorios
de los usuarios_ O quizás se le haya desprovisto de la
capacidad de acceder o modificar bases de datos_ Se ha prevenido
exitosamente que pudiera escribir tanto archivos buenos como malos, o
que pudiera realizar transacciones buenas o malas en la base de datos_
Un error de seguridad cometido con frecuencia en este punto es darle
permisos de administrador (root) a apache, o incrementar las
habilidades del usuario de apache de alguna otra forma_
Escalar los permisos del usuario de Apache hasta el nivel de
administrador es extremadamente peligroso y puede comprometer al
sistema entero, así que el uso de entornos sudo, chroot, o
cualquier otro mecanismo que sea ejecutado como root no debería
ser una opción viable para aquellos que no son profesionales en
seguridad_
Existen otras soluciones más simples_ Mediante el uso de open_basedir usted puede controlar y
restringir aquellos directorios que podrían ser usados por
PHP_ También puede definir áreas solo_Apache, para
restringir todas las actividades basadas en web a archivos que no son
de usuarios, o del sistema_