Aplicaciones php seguras con suexec

Si la aplicación se ejecuta en Apache (ya que más de la mitad de los sitios web en Internet lo hacen), es posible que desee considerar que permite SuExec en su configuración de Apache. SuExec es un mecanismo que se incluye con Apache que causa scripts que deben ejecutarse como el usuario que posee la secuencia de comandos, en lugar de correr como el usuario del servidor web.

Video: 48.-Curso PHP-MySQL. Crear Aplicaciones web seguras

En un entorno no SuExec, todos los scripts se ejecutan como el mismo ID de usuario como el propio servidor web. Por desgracia, una secuencia de comandos vulnerables puede dar a un usuario malintencionado acceso por la puerta trasera a todo el servidor web, incluyendo secuencias de comandos que se ejecutan en otros sitios alojados en el mismo servidor.

SuExec intenta mitigar este problema mediante la restricción de aplicaciones web a sus propias áreas y funcionando bajo los ID de usuario de sus propietarios, en lugar de bajo el ID de usuario del servidor web. Por ejemplo, esta secuencia de comandos se ejecutan bajo el ID de usuario jpérez:

/home/~jsmith/public_html/scripts/please_hack_me.php

Un usuario malintencionado podría aprovechar esta secuencia de comandos, pero él o ella tendría acceso sólo a los archivos y programas que el jpérez se permite que el usuario de usar. Cada otro usuario en el servidor estaría protegida jpérezEs por escritura insegura.

Video: Mi primera aplicación web con mysql y php

Por desgracia, conseguir SuExec funcione correctamente con hosts virtuales, o múltiples sitios web independientes ubicados físicamente en el mismo servidor web, puede ser complicado. SuExec está diseñado para ejecutar secuencias de comandos que existen en la raíz de documentos del servidor web.

La mayoría de servidores virtuales se configuran de una manera que le da a cada individuo su propia página web raíz del documento, y la raíz de documentos de cada sitio no se encuentra en la raíz de documentos del servidor web. Para evitar esta restricción, el administrador del sistema debe añadir raíz de documentos de cada host virtual a la variable raíz de documentos del servidor web en el archivo de configuración de Apache.

SuExec también requiere que los scripts PHP se ejecutan como Common Gateway Interface (CGI), que es más lenta que ejecuta PHP como un módulo precompilado bajo Apache. CGI fue el primer modelo viable para aplicaciones web, y todavía se utiliza para los scripts simples. Sin embargo, una vez que salga del ámbito de scripting PHP y empezar a escribir aplicaciones de pleno derecho, que necesita el aumento de rendimiento de PHP precompilado.

Para los servidores web bastante simples, SuExec puede mantener una aplicación insegura del pisoteo todo lo demás. Sin embargo, en un entorno más complejo con los servidores virtuales, módulos precompilados, y docenas o cientos de usuarios, se necesita un modelo de seguridad que es un poco más robusto.

Artículos Relacionados