Seguridad formulario de contacto

Rodrigo Fuentealba darkprox en gmail.com
Vie Mar 10 01:25:18 CLST 2006


Boris Cruchet wrote:
> Una solucion sencilla que he encontrado
>
> es la utilizacion de inagemes con texto, que el usuario debe escribir en
> un campo del formulario ...
>
> desconosco si existen sistemas capaces de leer estas imagenes y realizar
> reconocimiento de caracteres ... pero creo que no
>
> es una solucion sencilla y creo que suficientemente buena
>
> Saludos
> B
>   
>> Buenos tardes gente,
>> la situación es la siguiente, existe un sitio don hay un formulario de
>> contacto, el cual al llenar los datos envía un correo a cierta casilla
>> con toda la información ingresada en el formulario. Todo funciona bien,
>> hasta que un buen día, esto comenzó a colapsar. La casilla de correo a
>> la cual llegan los datos, se comenzó a llenar de correo basura, cuando
>> digo basura no me refiero a SPAM, Virus o algo por el estilo, sino que
>> basura, correos ilegibles enviados desde apache en servidor.
>> Cabe destacar que el servidor de correo es controlado por nosotros, pero
>> donde está la aplicación (Apache+PHP), es en nuestro ISP.
>> Como medida de precaución, me dediqué a revisar el código, y
>> evidentemente tenía falencias, no tenía una validación de envío alguno,
>> por lo tanto recibía cualquier dato y lo enviaba.
>> Le agregué una validación del tipo if($_REQUEST['boton']) {} para
>> validar que efectivamente se estaba enviando el correo desde el
>> formulario y no desde alguna otra parte, con ello la recepción de correo
>> basura descendió desde 200 por hora a 4 por hora, sin embargo aún sigue
>> llegando correo de ese tipo, sin la frecuencia anterior, pero llegan.
>> La pregunta es la siguiente, que método de validación puedo aplicar para
>> comprobar que efectivamente los datos son enviados desde la página y no
>> desde otra parte, aparte del REQUEST y de SESSION.
>> Muchas gracias.
>>     
No uses $_REQUEST, usa $_POST... es bastante probable que cuando usas 
$_REQUEST te pasen el mail por método $_GET, algo como
http://www.tuserver.com/contacto.php?to=tu@server.com&from=servidor@apache&content=28396527643592765432354 
(por ponerle un ejemplo).

Ya con eso evitas programas muleros que hacen uso de esta falla.

Lo otro, como dice Boris, es utilizar imágenes. La técnica de imágenes 
generadas con GD se llama CAPTCHA. En pear.php.net hay una 
implementación de esto, bastante útil, la usamos bastante en los 
sistemas de mi empresa y funciona bien. Ahora, aquí en este PC no tengo 
ningún ejemplo como para poder enviarte.

Sobre sistemas de reconocimiento de texto en imágenes, yo he visto un 
solo sistema en un laboratorio en Alemania, pero trabaja solamente bajo 
imágenes XPM pues cuenta patrones con un editor de textos y sólo es 
capaz de reconocer la letra Arial, y lo usaban para escaneo de textos 
para la biblioteca de proyectos de una empresa de automóviles... 
Funcionaba como OCR pero en vez del escáner usaba la pantalla... 
entrete, no?

( A todos los de la lista, a alguien le interesaría construir uno de 
estos sistemas? nos haríamos la América... :-X )
>> Rodrigo Ruiz Fuentes <raruiz en alumnos.duoc.cl
Saludos

Rodrigo Fuentealba Cartes


Más información sobre la lista de distribución PHP