Como evitar la injección de emails mediante formularios en php
April 3, 2007 12:42 am PleskEste es un trauma por el que ha pasado todo administrador de sistemas, a quien no le ha pasado el tener un cliente que tiene un formulario web mal programado y desde el cual te injectan miles y miles de correos diarios, que hacen que pierdas el tiempo y tus clientes de acosen y se vayan por los continuos retrasos.
Es más si el servidor es compartido y tiene muchas webs, el problema se complica más todavia. En plesk además con la versión que trae de Qmail, sin parchearla no es posible, limitar el número de correos por email, cosa que tal vez nos pueda sacar de un apuro pero provocarnos otros problemas.
Después de miles de pruebas, encontré una solución que funciona, y no he vuelto a tener problemas de ese tipo. Gracias al proyecto hardened-php , tenemos un modulo llamado suhosin , que nos puede ayudar con esta tarea.
Hay dos formas de hacerlo funcionar, o bien parcheando el php o bien como modulo en el php, y esta última es la que vamos a utilizar. Para ellos vamos a necesitar la utilizar phpize, que viene con el paquete devel de las distribuciones.
Por ejemplo para una debian Sarge tendríamos que hacer:
apt-get install php4-devel
Vamos a la web y descargamos la última versión disponible: link
Lo descomprimimos y entramos al directorio.
tar -xvzf suhosin-0.9.18.tgz
cd suhosin-0.9.18
Ahora ya podemos compilar e instalar la extensión.
phpize
./configure
make
make install
Después de esto solo nos queda configurar el php para que haga uso de la extensión:
nano -w /etc/php4/apache2/php.ini ( en el caso de debian )
nano -w /etc/php.ini ( en el caso de RedHat y Fedora )
Y en la sección de Extensiones dinámicas pondremos:
extension=suhosin.so
suhosin.mail.protect = 2
Para comprobar si está bien instalado, haremos:
php -i -c /etc/php4/apache2/php.ini | grep suhosin.mail.protect ( En debian )
php -i -c /etc/php.ini | grep suhosin.mail.protect ( En fedora )
Si sale:
suhosin.mail.protect => 2 => 2
Entonces ya tenemos todo funcionando y podremos reiniciar el apache para que se apliquen los cambios.
Comentar que la extensión tiene 3 niveles de protección explicados aquí . Así como opciones para poder hacer logs.
La extensión tiene muchas más utilidades pero nosotros vamos a utilizar de moment solo esa, teneís un listado completo en:
http://www.hardened-php.net/suhosin/a_feature_list.html
Espero que a alguien le sirva esto de ayuda.
