¿Te gustaría aprender a PHP desde cero?
Tenemos los cursos que necesitas.¡Haz clic aquí!

 

Dice la documentación oficial de PHP que la directiva safe_modees 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.

Te esperamos en los siguientes artículos en donde hablaremos mas acerca de estos temas, los cuales hoy en día son de vital importancia en el mundo de la tecnología.

¿Te gustaría aprender a PHP desde cero?
Tenemos los cursos que necesitas.¡Haz clic aquí!
About Author

NGuerrero

0 0 votos
Article Rating
Suscribir
Notificar de
guest
0 Comments
Comentarios.
Ver todos los comentarios
0
¿Te gusta este articulo? por favor comentax
()
x
Abrir chat
¿Quieres aprender a programar?
Hola 👋,
¿Te interesa información de nuestros cursos?