php perl apache mod-perl mod-php

php - ¿Hay alguna diferencia entre apache module vs cgi(concerniente a la seguridad)?



perl mod-perl (6)

Ej. ¿Es más seguro usar mod_php lugar de php-cgi ? ¿O es más seguro usar mod_perl lugar de los cgi-scripts tradicionales cgi-scripts ?

Principalmente estoy interesado en las preocupaciones de seguridad, pero la velocidad puede ser un problema si hay diferencias significativas.


La mayoría de los agujeros de seguridad se producen debido a la mala programación en el script en sí, por lo que es realmente discutible si se ejecutan como CGI o en módulos. Dicho esto, los módulos de apache pueden bloquear potencialmente todo el servidor web (especialmente si se utiliza un MPM enhebrado) y mod_php es famoso por ello.

cgi será más lento, pero hoy en día hay soluciones para eso, principalmente FastCGI y amigos.

¿Cuál es tu modelo de amenaza?


Seguridad en qué sentido? De cualquier manera, realmente depende de qué script se está ejecutando y de qué tan bien está escrito. Demasiadas secuencias de comandos en estos días son medio pesadas y no hacen correctamente la validación de entrada.

Yo personalmente prefiero FastCGI a mod_php, ya que si un proceso FastCGI muere, uno nuevo se generará, mientras que he visto mod_php matar a la totalidad de Apache.

En cuanto a la seguridad, con FastCGI podría ejecutar técnicamente el proceso de php con un usuario diferente del usuario de servidores web predeterminado.

En una nota aparte, si está utilizando la nueva compatibilidad con subprocesos de trabajo de Apache, querrá asegurarse de no estar utilizando mod_php, ya que algunas de las extensiones no son seguras para hilos y causarán condiciones de carrera.


Si ejecuta su propio servidor vaya por el módulo, es algo más rápido. Si está en un servidor compartido, la decisión ya se tomó, generalmente en el lado de CGI. La razón de esto son los permisos del sistema de archivos. PHP como módulo se ejecuta con los permisos del servidor http (generalmente ''apache'') y, a menos que pueda modificar sus scripts a ese usuario, debe modificarlos al 777, legible en todo el mundo. Esto significa, por desgracia, que su vecino del servidor puede echarles un vistazo; piense en dónde almacena la contraseña de acceso a la base de datos. La mayoría de los servidores compartidos han resuelto esto usando cosas como phpsuexec y similares, que ejecutan scripts con los permisos del propietario del script, por lo que puedes (debes) tener tu código como 644. Phpsuexec solo funciona con PHP como CGI, eso es más o menos todo , es solo una cosa de la máquina local, no hace ninguna diferencia para el mundo en general.


Un módulo como mod_php o FastCGI es increíblemente más rápido que el CGI simple ... simplemente no hagas CGI. Como han dicho otros, el programa PHP es la mayor amenaza a la seguridad, pero ignora que existe otra consideración en los hosts compartidos.

Si su script está en un host compartido con otros programas php y el host no se ejecuta en modo seguro, entonces es probable que todos los procesos del servidor se estén ejecutando como el mismo usuario. Esto podría significar que cualquier otra secuencia de comandos php puede leer la suya, incluidas las contraseñas de la base de datos. Así que asegúrese de investigar la configuración del servidor para asegurarse de que su código no sea legible para otros.

Incluso si controla su propio alojamiento, tenga en cuenta que otra aplicación web pirateada en el servidor podría ser un conducto para otros.


Usar un módulo integrado definitivamente va a ser más rápido que usar CGI. Las implicaciones de seguridad dependen de la configuración. En la configuración predeterminada, son prácticamente iguales, pero cgi permite algunas configuraciones más seguras que los módulos integrados no pueden proporcionar, especialmente en el contexto del alojamiento compartido. ¿Sobre qué exactamente quieres asegurarte?


Desde el PHP install.txt doc para PHP 5.2.6:

Los módulos de servidor proporcionan un rendimiento significativamente mejor y una funcionalidad adicional en comparación con el binario CGI.

Para IIS / PWS:

Advertencia

Al usar la configuración CGI, su servidor está abierto a varios posibles ataques. Por favor, lea nuestra sección de seguridad CGI para aprender cómo defenderse de esos ataques.