Frecuentemente me he dado cuenta de que sobretodo en algunos hostings masivos, la configuración de PHP quizás no es la más adecuada en cuanto a rendimiento y seguridad. Lo primero por lo general es por un tema de retrocompatibilidad, mientras que lo segundo es para que no los tapen a llamadas debido a que algo no funciona como debe (y no revisan los logs).
Este post tratará fundamentalmente de este tema: se explicarán algunas de las opciones más extrañas o menos documentadas de PHP (última versión de la rama 5.2) y se comparará su uso en un ambiente de testing versus un ambiente de producción. Así que dale a “continuar leyendo” que esto no es fácil de encontrar!
A continuación mostraré un archivo php.ini con toda su configuración recomendada para una máquina de testeo. Ojo que van a faltar muchas cosas, sólo pondré las que más pueden confundir.
El archivo en resumen
Explicaciones más detalladas de algunas opciones
implicit_flush: Esta directiva controla si llamar la función flush() después de cada echo o print. Útil en el caso de estar trabajando con ob_start() y otros, inútil para lo demás. Se recomiendo Off, aún en desarrollo.
safe_mode: Al contrario de lo que se cree, esta función NO tiene nada que ver con la seguridad del equipo, ya que se puede anular o bypassear fácilmente mediante otros métodos. Lo recomiendo siempre en off, además de que en futuras versiones de PHP igual lo sacarán por la confusión que producía la palabra en sí y por la poca (in)utilidad que ofrecía.
register_globals: Ni por nada del mundo se les ocurra dejar activado esto, ni siquiera en ambiente de testeo! Si tenemos por ejemplo una variable que inserta algo en la página (que se llame $inserta), basta con hacer el request de esta manera:
http://ejemplo.com/pagina.php?inserta=inserte-aqui-su-ataque-XSS-favorito
para poder hacer un ataque XSS.
Para concluir
Estamos de acuerdo: todavía faltan muchísimas opciones (que le pueden agregar un plus bastante grande en cuanto a seguridad y rapidez), pero estas ya son mucho más avanzadas y dependen netamente de dónde o bajo qué condiciones se monta la aplicación, por lo que no representa un interés de parte de un público un poco más masivo y ciertamente tampoco sirve para un ambiente de desarrollo a menos que se pretenda simular el mismo ambiente que el de producción.
Espero que les haya servido :)
u n r e a l 4 u . c o m
Sobre mi
Camilo Sperberg es Ingeniero Informático especializado en Linux y PHP. Éste es su blog oficial
y aquí podrá leer mucha más información acerca de temáticas variadas en el bajo mundillo de la informática relacionada con esos tópicos
Debido a la gran cantidad de guiños y referencias relacionadas con el mundo informático, esta sección permanecerá siempre incompleta, al menos hasta que se complete
Oh, i'm very confortable with my sexuality, i just don't want to be slapped in the face with THEIR sexuality