Limitar/prohibir el uso de ini_set

El otro día me pasó un caso cuando menos curioso. En uno de los equipos que administro en el trabajo que hace de servidor web se instaló una nueva página que fue desarrollada externamente. Llegó al equipo, se instaló y comenzó a trabajar. Hasta ahí el proceso todo correcto, pero al día siguiente comenzaron a llegar mensajes a los log's de que la web estaba a sobrescribir el valor del máximo de memoria permitido por php, logrando así más memoria de la que debiera. Para hacer esto simplemente hay que hacer uso desde php de init_set(). Así y de forma sencilla cualquier página web escrita en php puede volver a darles valor a las variables definidas en el php.ini. Esto desde luego no me gustó nada, pero tampoco sabía cómo lograr evitar que eso sucediera. Así que me puse a investigar un poco cómo poder lograrlo y por fin encontré la solución: php_admin_value y php_admin_flag.
Estas dos directivas de php se pueden incluir en el virtualhost que nos convenga limitar y establecer todas aquellas variables que queramos impedir que se sobrescriban. De esta forma tan sencilla limitamos el empleo discriminado de init_set y de los .htaccess en los virtualhost e impedimos que se vulnere la seguridad del sistema de forma directa.
<VirtualHost *:80>
   ...
   php_admin_value memory_limit 128M
   ...
</VirtualHost>
De esta forma tan sencilla se impide que el valor memory_limit se puede sobrescribir desde el código php escrito en la web.
La diferencia entre php_admin_value y php_admin_flag es únicamente que el primero es para variables con valor y la segunda para variables booleanas.

Se que en mi caso no tenía importancia alguna, ya que era código confiable, pero no está demás saber cómo impedir que se haga y ésta es una forma sencilla.


No hay comentarios :

Publicar un comentario

Formulario de contacto

Nombre

Correo electrónico *

Mensaje *

Últimos comentarios