Hola, somos Arume

Desarrollamos páginas web, aplicaciones para móviles, capas de realidad aumentada y aplicaciones para Facebook. Nos apasiona la informática y somos unos perfeccionistas incurables; por eso en nuestros proyectos utilizamos estándares.

tel. 625 519 694

Mendaña de Neyra, 34, 3º B, 15008, A Coruña

Autenticarse

Registrarse. ¿Has olvidado tu contraseña?

Etiquetas

Saltar las etiquetas

Suscríbete a las RSS

Estás en:

Directivas PHP: safe_mode

04 Jul 2011 por Jose

Comentarios: 1

PHP

Dice la documentación oficial de PHP que la directiva safe_mode es un intento de resolver un problema de seguridad en servidores compartidos. Y aunque sí mejora la seguridad no resulta una práctica infalible, ya que lleva a muchos proveedores de Internet (ISP) y programadores a pensar que están a salvo de amenazas de seguridad. Esto no debe ser del todo cierto cuando la comunidad PHP la ha declarado obsoleta en la versión 5, y no estará presente en la versión 6.

¿Cómo aumenta safe_mode la seguridad?

Con la directiva safe_mode activada PHP comprueba que el usuario actual es el propietario (UID) de los ficheros y directorios a los que desea acceder cada script, esto es verdaderamente útil cuando trabajamos con servidores compartidos, puesto que si un script sube un archivo a un servidor compartido, generalmente es guardado con el usuario web por defecto ("apache", "httpd", ...), por lo que sin la comprobación de usuario cualquier aplicación del servidor compartido podría acceder a nuestro fichero.

Esta directiva también restringe el uso de ejecutables que puedan correr los scripts en nuestro sistema, lo que afecta a las funciones sytem(), exec() y shell_exec() entre otras.

Un ejemplo de los problemas que puede traer el safe_mode activado es en sistemas Linux, porque como dijimos al crear un directorio se crea con el usuario de Apache, por lo que un usuario del sistema no tendrá acceso al directorio, ni a los archivos dentro de éste.

Hay una serie de ajustes que nos ayudan a trabajar con safe_mode activado y superar sus limitaciones, éstos son:

safe_mode_gid

En algunos casos puede resultar útil que el modo seguro compruebe únicamente los permisos de grupo en el archivo (GID), en este caso deberemos activar la directiva.

safe_mode_include_dir

Definimos un directorio en el que sus archivos se consideran seguros para el equipo, por lo que no necesitaremos comprobar el UID para trabajar con ellos.

safe_mode_exec_dir

En este directorio estarán los programas que podrán ser ejecutados con safe_mode activado. Si este directorio no está establecido las llamadas a las funciones sytem() o exec() fallarán. La función shell_exec() no está disponible con safe_mode activado.

Hay que tener también en cuenta que, con safe_mode habilitado, la cadena de comandos que se le pasa a estas funciones se escapa automáticamente con escapeshellcmd().

safe_mode_allowed_env_vars

Define una lista de variables de entorno que el usuario podrá cambiar. Si no está establecido, todas las variables pueden ser editadas.

Existe otra directiva de PHP que nos permite asignar una seguridad de acceso a nuestros ficheros y directorios, open_basedir, que activada limita las operaciones que se pueden realizar en los directorios configurados, y no depende del estado de safe_mode.

Comentarios

1 comentarios. Comentar.

1. Anónimo el 24 Oct 2013 a las 08:30:13

Muchas gracias. Estaba dudando si activarlo o no. Finalmente lo activaré porque no quiero permitir que un php pueda cambiar el time limit

Comentar

Comentar de forma anónima

Puedes comentar poniendo cualquier nombre o apodo, exceptuando los nombres de usuarios registrados. Máximo de 50 caracteres.

Comentar como usuario registrado

Registrarse. ¿Has olvidado tu contraseña?