PDA

Ver la Versión Completa : formularios php y seguridad


elcigarra
07-11-2006, 16:02:03
Hola, amigos. Tengo una curiosidad:
Tengo una página de contacto en php donde hay un formulario php que me envía por mail el nombre la edad y el texto del contacto (con la función mail). Esto con dos campos de texto y un textarea para los comentarios

He recibido de este formulario (y de otros que incluyen envío de archivos) mails similares al que copio y pego abajo (lo que está en negrita lo agrego cuando armo el mail, lo otro lo ingresó el usuario:


Nombre: temperatures6537@midominio.com (o sea en vez del nombre
Edad:
Comentario: along Content-Type: multipart/alternative; boundary=a26396ef96ea5526bf
417922b2c9b39d X-Mailer: Evolution/1.0-5mdk Subject: pork, a to:
dippyrose@aol.com,leeaquarius@aol.com,mpodymai@aol.com,tbsbar@aol.com,
topcopl2@aol.com,godownbigdog@aol.com,mills3reasons@aol.com, valandandym@aol.com,charrierkk@aol.com --a26396ef96ea5526bf417922b2c9b39d
Content-Transfer-Encoding: 7bit Content-Type: text/plain cup or 2 fl. oz) of good vinegar
( his may have been stronger than the --a26396ef96ea5526bf417922b2c9b39d Content-
Transfer-Encoding: base64 Content-Type: text/plain YW5kIGFkZHMgY29sb3VyIGFuZCBmb
GF2b3VyLiByaWxsaW5nIGhhcyBub25lIG9mIHRoZXNlIHBy b2JsZW1zLCBhcyB0aGUgaGVhdA=
= --a26396ef96ea5526bf417922b2c9b39d-- .



Obviamente no tenía intenciones de contactarse conmigo. Alguien tiene idea qué estan intentando hacer con mi formulario. Digo por si es necesario tener alguna precaución con este tipo de formularios. Yo, en mi desconocimiento solo paso las variables del formulario al texto del mail y lo mando con la función mail. No sé si eso alcanza.

dec
07-11-2006, 16:37:52
Hola,

La verdad es que no sé qué pueden pretender hacer con el formulario, puesto que, aunque intuyo que puedan querer enviar correo basura, por poner un caso, lo cierto es que no deja de ser una intuición un poco vana, lo reconozco.

No sé. Se me ocurre que valides todos los campos del formulario. El nombre, por ejemplo, puede estar limitado en longitud (de caracteres) y en cuanto a los caracteres que puede admitir: sólo letras, por ejemplo.

El correo electrónico puedes también validarlo, comprobando que se trate de una dirección de correo electrónico sintácticamente válida. Encontrarás varias funciones en Internet sobre esto: casi todas hacen uso de Expresiones Regulares.

El texto del correo (el contenido del "textarea") puedes también validarlo atendiendo a su "longitud", o buscar en el mismo caracteres "especiales", es decir, podrías no permitir sino caracteres alfanuméricos (otra vez aquí entran las Expresiones Regulares).

Con esto último, es decir, al cuerpo del email podías también aplicarle alguna función, como pudiera ser la que remueve del contenido las etiquetas HTML, de ese modo el "<br>" de tu ejemplo no hubiera "pasado", por ejemplo. Creo que la función de que hablo es: strip_tags (http://es2.php.net/manual/es/function.strip-tags.php)

elcigarra
07-11-2006, 16:56:28
Todo eso es posible y obviamente será objeto de mejoras, aunque en realidad por ahora no son más que uno de estos (que no me molesta borrar sin pensar mucho) cada varios de los buenos pero la preocupación que me causa es que alguien esté utilizando mi cuenta de servidor para enviar correos y yo no me entere.

Yo supongo que esto no es posible, estoy en lo correcto?

dec
07-11-2006, 16:59:58
Hola,

Por supuesto, yo no me atrevo a decir que haya algo imposible... además no estoy pensando en validar correos sospechosos, sino todos los campos de un determinado formulario: piensa que en este caso te enteraste del problema, pero, ¿y en los casos en que quien consiga su espúreo objetivo consiga además que nadie se entere? Hombre, siempre hay "logs" por ahí que revisar, pero, a veces no se tiene acceso a ellos.

Validar los campos de un formulario es algo necesario. No lo tomes como un trabajo pesado e ingrato: es todo lo contrario, son tareas que no están demás y que incluso podrían considerarse como del todo necesarias. Sobre todo si nuestra aplicación está "expuesta" en Internet a los "ataques" de vaya usted a saber quién... incluso tomando precauciones pueden darse "agujeros" de seguridad, en los que uno no había pensado... pero al menos que les cueste encontrarlos, ¿no te parece?

elcigarra
07-11-2006, 21:02:53
estoy de acuerdo, gracias