<?xml version="1.0" encoding="UTF-8"?><!-- generator="wordpress/2.0.11" -->
<rss version="2.0" 
	xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
	<title>Comentarios en: Evitar spam en formularios PHP</title>
	<link>http://surlandia.com/2006/11/08/evitar-spam-en-formularios-php/</link>
	<description>un país no tan imaginario</description>
	<pubDate>Thu, 20 Nov 2008 10:59:19 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.0.11</generator>

	<item>
		<title>Por: Oscar Reales</title>
		<link>http://surlandia.com/2006/11/08/evitar-spam-en-formularios-php/#comment-19827</link>
		<pubDate>Wed, 18 Jun 2008 08:55:32 +0000</pubDate>
		<guid>http://surlandia.com/2006/11/08/evitar-spam-en-formularios-php/#comment-19827</guid>
					<description>Si utilizas un formulario para insertar datos en una base de datos, las precauciones han de extremarse para evitar 'SQL injections', que basicamente consiste en la introducción a través del formulario de datos maliciosos que rompan o vulneren o cambien el comportamiento de tu aplicación y tu integridad de datos. Sin entrar en muchos detalles, porque eso sería tema para un post en si mismo, pero básicamente siempre tienes que filtrar y validar los datos introducidos por el usuario. Filtrar para limpiar caracteres de escape como las comillas, segundo validar, para asegurarte que los datos introducidos se ajustan a los que tu aplicación espera, y muy importante, "escapar" los datos antes de introducirlos a la BBDD. Esto es, convertir los caracteres maliciosos como las comillas, barras, punto y coma, etcc, a un equivalente xhtml o encerrados entre comillas para que no puedan romper tus sentencias SQL. Espero haberte dado alguna "idea" genérica de las precauciones a tomar.</description>
		<content:encoded><![CDATA[<p>Si utilizas un formulario para insertar datos en una base de datos, las precauciones han de extremarse para evitar &#8216;SQL injections&#8217;, que basicamente consiste en la introducción a través del formulario de datos maliciosos que rompan o vulneren o cambien el comportamiento de tu aplicación y tu integridad de datos. Sin entrar en muchos detalles, porque eso sería tema para un post en si mismo, pero básicamente siempre tienes que filtrar y validar los datos introducidos por el usuario. Filtrar para limpiar caracteres de escape como las comillas, segundo validar, para asegurarte que los datos introducidos se ajustan a los que tu aplicación espera, y muy importante, &#8220;escapar&#8221; los datos antes de introducirlos a la BBDD. Esto es, convertir los caracteres maliciosos como las comillas, barras, punto y coma, etcc, a un equivalente xhtml o encerrados entre comillas para que no puedan romper tus sentencias SQL. Espero haberte dado alguna &#8220;idea&#8221; genérica de las precauciones a tomar.
</p>
]]></content:encoded>
				</item>
	<item>
		<title>Por: Alberto</title>
		<link>http://surlandia.com/2006/11/08/evitar-spam-en-formularios-php/#comment-19310</link>
		<pubDate>Wed, 11 Jun 2008 17:40:30 +0000</pubDate>
		<guid>http://surlandia.com/2006/11/08/evitar-spam-en-formularios-php/#comment-19310</guid>
					<description>El tema que tratáis aquí es muy importante, sin embargo me gustaría preguntar: cuando el formulario está conectado a una base de datos en lugar de a una dirección de correo, ¿qué precauciones conviene adoptar?</description>
		<content:encoded><![CDATA[<p>El tema que tratáis aquí es muy importante, sin embargo me gustaría preguntar: cuando el formulario está conectado a una base de datos en lugar de a una dirección de correo, ¿qué precauciones conviene adoptar?
</p>
]]></content:encoded>
				</item>
	<item>
		<title>Por: Hugo</title>
		<link>http://surlandia.com/2006/11/08/evitar-spam-en-formularios-php/#comment-14716</link>
		<pubDate>Mon, 31 Mar 2008 05:39:23 +0000</pubDate>
		<guid>http://surlandia.com/2006/11/08/evitar-spam-en-formularios-php/#comment-14716</guid>
					<description>que tal este: Asumiendo que la direccón legítima a la que se desea enviar el correo sea pollo@dominio.com

//... todo el cod. del form
if ($destinatario != "pollo@dominio.com"){
  echo "te pille manoseando mi form";
   }else{
  // código que envia el form...</description>
		<content:encoded><![CDATA[<p>que tal este: Asumiendo que la direccón legítima a la que se desea enviar el correo sea <a href="mailto:pollo@dominio.com">pollo@dominio.com</a></p>
<p>//&#8230; todo el cod. del form<br />
if ($destinatario != &#8220;pollo@dominio.com&#8221;){<br />
  echo &#8220;te pille manoseando mi form&#8221;;<br />
   }else{<br />
  // código que envia el form&#8230;
</p>
]]></content:encoded>
				</item>
	<item>
		<title>Por: Gonzalo</title>
		<link>http://surlandia.com/2006/11/08/evitar-spam-en-formularios-php/#comment-7186</link>
		<pubDate>Tue, 30 Oct 2007 23:12:24 +0000</pubDate>
		<guid>http://surlandia.com/2006/11/08/evitar-spam-en-formularios-php/#comment-7186</guid>
					<description>Es muy interesante todo y trate de leerlo con mucha atención pero sigo sin entender NADA!!
estoy sufriendo en este momento de este problema y no se donde meter los cambios que proponene para evitar el "injection" me levantaron el formulario del servidor por estar enviando  SPAM... les dejo el PHP para ver si algun alma caritativa me dice como modificarlo, (es evidente que de PHP, ... nada)



mil Gracias a todos !!!!!!!!!!!!!</description>
		<content:encoded><![CDATA[<p>Es muy interesante todo y trate de leerlo con mucha atención pero sigo sin entender NADA!!<br />
estoy sufriendo en este momento de este problema y no se donde meter los cambios que proponene para evitar el &#8220;injection&#8221; me levantaron el formulario del servidor por estar enviando  SPAM&#8230; les dejo el PHP para ver si algun alma caritativa me dice como modificarlo, (es evidente que de PHP, &#8230; nada)</p>
<p>mil Gracias a todos !!!!!!!!!!!!!
</p>
]]></content:encoded>
				</item>
	<item>
		<title>Por: Lorena</title>
		<link>http://surlandia.com/2006/11/08/evitar-spam-en-formularios-php/#comment-3797</link>
		<pubDate>Mon, 20 Aug 2007 02:34:39 +0000</pubDate>
		<guid>http://surlandia.com/2006/11/08/evitar-spam-en-formularios-php/#comment-3797</guid>
					<description>Disculpen, pero yo recién estoy empezando y no quisiera que esto me pasara, así que para evitar confusiones.  Podrían poner directamente cómo quedaría el formulario con las modificaciones para evitar el spam? o si la verificación va en otro lado, dónde sería?  Muchas gracias.</description>
		<content:encoded><![CDATA[<p>Disculpen, pero yo recién estoy empezando y no quisiera que esto me pasara, así que para evitar confusiones.  Podrían poner directamente cómo quedaría el formulario con las modificaciones para evitar el spam? o si la verificación va en otro lado, dónde sería?  Muchas gracias.
</p>
]]></content:encoded>
				</item>
	<item>
		<title>Por: luison</title>
		<link>http://surlandia.com/2006/11/08/evitar-spam-en-formularios-php/#comment-3607</link>
		<pubDate>Sun, 12 Aug 2007 16:42:50 +0000</pubDate>
		<guid>http://surlandia.com/2006/11/08/evitar-spam-en-formularios-php/#comment-3607</guid>
					<description>Introducir un poco de PHP que requiera el envío de un post siempre es una buena solución. Sin necesidad del captcha ahora se estila también el poner preguntas sencillas de lógica o texto que hagan mostrarse los emails... tipo "3 5" o "Escribe mostras emails". En este link hay un codigo sencillo de manejar:
http://mikecherim.com/gbcms_xml/news_page.php?id=17#n17</description>
		<content:encoded><![CDATA[<p>Introducir un poco de PHP que requiera el envío de un post siempre es una buena solución. Sin necesidad del captcha ahora se estila también el poner preguntas sencillas de lógica o texto que hagan mostrarse los emails&#8230; tipo &#8220;3 5&#8243; o &#8220;Escribe mostras emails&#8221;. En este link hay un codigo sencillo de manejar:<br />
<a href="http://mikecherim.com/gbcms_xml/news_page.php?id=17#n17" rel="nofollow">http://mikecherim.com/gbcms_xml/news_page.php?id=17#n17</a>
</p>
]]></content:encoded>
				</item>
	<item>
		<title>Por: develooping</title>
		<link>http://surlandia.com/2006/11/08/evitar-spam-en-formularios-php/#comment-3606</link>
		<pubDate>Sun, 12 Aug 2007 16:29:36 +0000</pubDate>
		<guid>http://surlandia.com/2006/11/08/evitar-spam-en-formularios-php/#comment-3606</guid>
					<description>Hola Jorge. No estoy muy seguro de que el método que propones sea muy eficaz. Al menos no es a prueba de fuego y es sencillo de engañar.
De todas formas, aunque insisto en que no me parece fiable, es también muy sencillo hacer lo que dices y modificar cualquier script para enviar e-mail con PHP para que no lo haga si se ha mandado un valor cualquiera en un campo oculto que hemos puesto como "trampa" (¿He dicho ya que no me parece un método seguro?)

Si el campo oculto se llama "address" con el valor "el_jefe@de_esto.com" (nota que le pongo un nombre que pretende reforzar el engaño), sería simple colocar una condición para que en caso de que ese campo me llegue con valor distinto, no procese el formulario. En este caso bastaría con añadir a cualquier script PHP que procese y envíe lo siguiente
&lt;code&gt;if(€_POST['address']!="el_jefe@de_esto.com"){
//el campo viene relleno
echo "ay, ay, ay, pichoncillo";
}else{
//aqui va el código que procesa el formulario
/////THE END
}&lt;/code&gt;

Nota que que usado el signo del euro en lugar del dolar, pero es que no conseguía que Wordpress se lo tragara sin rechistar. Será que no querrá que use el formulario para inyectar scripts ;-). Claro que tal y como está el cambio sales ganando</description>
		<content:encoded><![CDATA[<p>Hola Jorge. No estoy muy seguro de que el método que propones sea muy eficaz. Al menos no es a prueba de fuego y es sencillo de engañar.<br />
De todas formas, aunque insisto en que no me parece fiable, es también muy sencillo hacer lo que dices y modificar cualquier script para enviar e-mail con PHP para que no lo haga si se ha mandado un valor cualquiera en un campo oculto que hemos puesto como &#8220;trampa&#8221; (¿He dicho ya que no me parece un método seguro?)</p>
<p>Si el campo oculto se llama &#8220;address&#8221; con el valor &#8220;el_jefe@de_esto.com&#8221; (nota que le pongo un nombre que pretende reforzar el engaño), sería simple colocar una condición para que en caso de que ese campo me llegue con valor distinto, no procese el formulario. En este caso bastaría con añadir a cualquier script PHP que procese y envíe lo siguiente<br />
<code>if(€_POST['address']!="el_jefe@de_esto.com"){<br />
//el campo viene relleno<br />
echo "ay, ay, ay, pichoncillo";<br />
}else{<br />
//aqui va el código que procesa el formulario<br />
/////THE END<br />
}</code></p>
<p>Nota que que usado el signo del euro en lugar del dolar, pero es que no conseguía que Wordpress se lo tragara sin rechistar. Será que no querrá que use el formulario para inyectar scripts ;-). Claro que tal y como está el cambio sales ganando
</p>
]]></content:encoded>
				</item>
	<item>
		<title>Por: Jorge RR</title>
		<link>http://surlandia.com/2006/11/08/evitar-spam-en-formularios-php/#comment-3597</link>
		<pubDate>Sat, 11 Aug 2007 16:10:34 +0000</pubDate>
		<guid>http://surlandia.com/2006/11/08/evitar-spam-en-formularios-php/#comment-3597</guid>
					<description>Hola.
Sufro del mismo problema que muchos han declarado aqui. Soy diseñador web y no tengo un conocimiento muy avanzado en programación. Buscando en la web vi diversas maneras de evitar el spam en formularios y encontré una que parecia interesante: ocultar un campo de formulario que las personas no puedan ver para generar un filtro, ya que los spambots rellenan todos los campos (visibles o no visibles). Esto es interesante porque rápidamente determinas si el formulario fue llenado por una persona o por un robot. La pregunta que tengo es: alguien conoce un script en PHP para determinar que si el mencionado campo fue llenado, no se procese la solicitud de post o se descarte el mensaje?
Gracias anticipadas!
Saludos!!

Jorge</description>
		<content:encoded><![CDATA[<p>Hola.<br />
Sufro del mismo problema que muchos han declarado aqui. Soy diseñador web y no tengo un conocimiento muy avanzado en programación. Buscando en la web vi diversas maneras de evitar el spam en formularios y encontré una que parecia interesante: ocultar un campo de formulario que las personas no puedan ver para generar un filtro, ya que los spambots rellenan todos los campos (visibles o no visibles). Esto es interesante porque rápidamente determinas si el formulario fue llenado por una persona o por un robot. La pregunta que tengo es: alguien conoce un script en PHP para determinar que si el mencionado campo fue llenado, no se procese la solicitud de post o se descarte el mensaje?<br />
Gracias anticipadas!<br />
Saludos!!</p>
<p>Jorge
</p>
]]></content:encoded>
				</item>
	<item>
		<title>Por: develooping</title>
		<link>http://surlandia.com/2006/11/08/evitar-spam-en-formularios-php/#comment-2177</link>
		<pubDate>Mon, 04 Jun 2007 21:26:08 +0000</pubDate>
		<guid>http://surlandia.com/2006/11/08/evitar-spam-en-formularios-php/#comment-2177</guid>
					<description>Hola Juan.
Posiblemente el método que cuentas pueda evitar de forma más que razonablemente segura que se reenvíe un formulario, de hecho se parece mucho a lo que indiqué en el comentario 23, pero no necesariamente el uso del mismo para el envío de spam, salvo que lo acompañes de alguna medida para tal fin.
Ten en cuenta que el método de inyección de encabezados consiste en insertar cabeceras al formulario que envía el correo, de forma que es perfectamente posible enviar un correo a cientos de destinatarios sin necesidad de tener que enviarlo más que una vez.</description>
		<content:encoded><![CDATA[<p>Hola Juan.<br />
Posiblemente el método que cuentas pueda evitar de forma más que razonablemente segura que se reenvíe un formulario, de hecho se parece mucho a lo que indiqué en el comentario 23, pero no necesariamente el uso del mismo para el envío de spam, salvo que lo acompañes de alguna medida para tal fin.<br />
Ten en cuenta que el método de inyección de encabezados consiste en insertar cabeceras al formulario que envía el correo, de forma que es perfectamente posible enviar un correo a cientos de destinatarios sin necesidad de tener que enviarlo más que una vez.
</p>
]]></content:encoded>
				</item>
	<item>
		<title>Por: Juan</title>
		<link>http://surlandia.com/2006/11/08/evitar-spam-en-formularios-php/#comment-2173</link>
		<pubDate>Mon, 04 Jun 2007 17:48:48 +0000</pubDate>
		<guid>http://surlandia.com/2006/11/08/evitar-spam-en-formularios-php/#comment-2173</guid>
					<description>Muy buen artículo, gracias.

¿Podrían utilizarse sesiones para evitar el spam?

Es decir, en la pagina principal de nuestro sitio web arrancamos una sesion con un nombre determinado. En la pagina de codigo php que envía el mail (p.ej. enviaMail.php), se verifica si la sesión está activa, y ademas crea una variable de sesión cuando se envía el primer mail del tipo timestamp, de forma que registra el momento en que se envió. Si se intenta enviar de nuevo, se compara la variable de sesión con la hora actual del sistema, y si es menor de, por ejemplo, 10 minutos, impide que se envíe un nuevo mail.

La verdad esque no controlo mucho de sesiones y no se si esto podría tener alguna vulnerabilidad, pero me ha parecido una buena solución (además de la detección de saltos de línea y otras soluciones que habéis dado por ahi).

Os agradecería algún comentario al respecto.

Un saludo, y gracias de nuevo.

Juan</description>
		<content:encoded><![CDATA[<p>Muy buen artículo, gracias.</p>
<p>¿Podrían utilizarse sesiones para evitar el spam?</p>
<p>Es decir, en la pagina principal de nuestro sitio web arrancamos una sesion con un nombre determinado. En la pagina de codigo php que envía el mail (p.ej. enviaMail.php), se verifica si la sesión está activa, y ademas crea una variable de sesión cuando se envía el primer mail del tipo timestamp, de forma que registra el momento en que se envió. Si se intenta enviar de nuevo, se compara la variable de sesión con la hora actual del sistema, y si es menor de, por ejemplo, 10 minutos, impide que se envíe un nuevo mail.</p>
<p>La verdad esque no controlo mucho de sesiones y no se si esto podría tener alguna vulnerabilidad, pero me ha parecido una buena solución (además de la detección de saltos de línea y otras soluciones que habéis dado por ahi).</p>
<p>Os agradecería algún comentario al respecto.</p>
<p>Un saludo, y gracias de nuevo.</p>
<p>Juan
</p>
]]></content:encoded>
				</item>
	<item>
		<title>Por: develooping</title>
		<link>http://surlandia.com/2006/11/08/evitar-spam-en-formularios-php/#comment-1550</link>
		<pubDate>Tue, 17 Apr 2007 21:00:02 +0000</pubDate>
		<guid>http://surlandia.com/2006/11/08/evitar-spam-en-formularios-php/#comment-1550</guid>
					<description>Hola Manuel.
En esta entrada y varios comentarios de la misma se describen métodos para implementar un captcha y para evitar el spam, pero estos sólo son válidos si el formulario que citas se procesa mediante php. Es bastante posible que así sea pues es un lenguaje muy extendido.
El captcha (mostrar un gráfico con letras y números para asegurarse de que el formulario está siendo enviado por un humano) podría ser suficiente, aunque para más seguridad tampoco estaría de más alguno de los métodos descritos para filtrar encabezados no deseados.
Por supuesto, para implementar estos métodos deberás tener unas nociones, aunque sean muy básicas, de php.</description>
		<content:encoded><![CDATA[<p>Hola Manuel.<br />
En esta entrada y varios comentarios de la misma se describen métodos para implementar un captcha y para evitar el spam, pero estos sólo son válidos si el formulario que citas se procesa mediante php. Es bastante posible que así sea pues es un lenguaje muy extendido.<br />
El captcha (mostrar un gráfico con letras y números para asegurarse de que el formulario está siendo enviado por un humano) podría ser suficiente, aunque para más seguridad tampoco estaría de más alguno de los métodos descritos para filtrar encabezados no deseados.<br />
Por supuesto, para implementar estos métodos deberás tener unas nociones, aunque sean muy básicas, de php.
</p>
]]></content:encoded>
				</item>
	<item>
		<title>Por: Manuel DF</title>
		<link>http://surlandia.com/2006/11/08/evitar-spam-en-formularios-php/#comment-1548</link>
		<pubDate>Tue, 17 Apr 2007 17:47:54 +0000</pubDate>
		<guid>http://surlandia.com/2006/11/08/evitar-spam-en-formularios-php/#comment-1548</guid>
					<description>Estoy vuelto loco con esto de los spams que se van por mi formulario, quisiera preguntar si el método que aparece en algunos formularios, en donde hay ciertos caracteres que el usuario tiene que escribir forzosamente para poder continuar o enviar el formulario, sirve para este fin. y si así es, cómo se puede realizar dicha operación, o existe alguna otra herramienta?...

gracias de antemano</description>
		<content:encoded><![CDATA[<p>Estoy vuelto loco con esto de los spams que se van por mi formulario, quisiera preguntar si el método que aparece en algunos formularios, en donde hay ciertos caracteres que el usuario tiene que escribir forzosamente para poder continuar o enviar el formulario, sirve para este fin. y si así es, cómo se puede realizar dicha operación, o existe alguna otra herramienta?&#8230;</p>
<p>gracias de antemano
</p>
]]></content:encoded>
				</item>
</channel>
</rss>
