Foros del Web » Programando para Internet » PHP »

Evitar bots en un formulario

Estas en el tema de Evitar bots en un formulario en el foro de PHP en Foros del Web. Buenas a todos, Estoy a punto de sacar una web sencillita centrada en un unico formulario. El caso es que tengo temor a ser atacado ...
  #1 (permalink)  
Antiguo 06/07/2013, 08:29
Avatar de 0123  
Fecha de Ingreso: noviembre-2012
Ubicación: Entre la consola, el coda y un poco de photoshop
Mensajes: 263
Antigüedad: 11 años, 5 meses
Puntos: 10
Evitar bots en un formulario

Buenas a todos,

Estoy a punto de sacar una web sencillita centrada en un unico formulario. El caso es que tengo temor a ser atacado por algun bot.

Mi problema es que el formulario no puede comenzar con un captcha. Puedo poner el captcha si es la segunda vez que ejecuta el formulario, no tengo problemas con ello. Pero el problema es que si uso cookies para saber si ya ha ejecutado el formulario el bot no los va a guardar, sessiones por lo tanto tampoco me valen. Tal vez la IP es la unica forma que tengo?.

Es que no se me ocurre otra cosa... solo tengo la IP verdad?.

  #2 (permalink)  
Antiguo 06/07/2013, 17:14
Avatar de guardarmicorreo  
Fecha de Ingreso: noviembre-2012
Ubicación: Córdoba
Mensajes: 1.153
Antigüedad: 11 años, 5 meses
Puntos: 84
Respuesta: Evitar bots en un formulario

Cita:
Iniciado por 0123 Ver Mensaje
Buenas a todos,

Estoy a punto de sacar una web sencillita centrada en un unico formulario. El caso es que tengo temor a ser atacado por algun bot.

Mi problema es que el formulario no puede comenzar con un captcha. Puedo poner el captcha si es la segunda vez que ejecuta el formulario, no tengo problemas con ello. Pero el problema es que si uso cookies para saber si ya ha ejecutado el formulario el bot no los va a guardar, sessiones por lo tanto tampoco me valen. Tal vez la IP es la unica forma que tengo?.

Es que no se me ocurre otra cosa... solo tengo la IP verdad?.

podría funcionarte la ip. no entiendo por qué no puedes utilizar captcha. otra solución es que obligues a que los usuarios se registren para acceder al formulario y además si quieres puedes en dicho registro incorporar un captcha.
  #3 (permalink)  
Antiguo 06/07/2013, 21:36
Avatar de metacortex
Viejo demente
 
Fecha de Ingreso: junio-2004
Ubicación: Caracas - Venezuela
Mensajes: 9.027
Antigüedad: 19 años, 11 meses
Puntos: 832
Respuesta: Evitar bots en un formulario

Cita:
Iniciado por 0123 Ver Mensaje
Buenas a todos,

Estoy a punto de sacar una web sencillita centrada en un unico formulario. El caso es que tengo temor a ser atacado por algun bot.

Mi problema es que el formulario no puede comenzar con un captcha. Puedo poner el captcha si es la segunda vez que ejecuta el formulario, no tengo problemas con ello. Pero el problema es que si uso cookies para saber si ya ha ejecutado el formulario el bot no los va a guardar, sessiones por lo tanto tampoco me valen. Tal vez la IP es la unica forma que tengo?.

Es que no se me ocurre otra cosa... solo tengo la IP verdad?.

Hace tiempo tuve el mismo lío y encontré una solución muy simple. Se trata de implementar una especie de "captcha a la inversa", agregando un primer campo de texto cuyo atributo "name" sea bastante común (por ej: name="nombre"). A ese input lo ocultas mediante CSS con display: none. El usuario común no lo verá pero el bot sí los devorará.

A partir de aquí sólo resta validar los envíos que no tengan seteado $_POST['nombre'].

Desventaja: Usuarios con discapacidad que tengan lectores de pantalla también caerán en la "trampa". Si no tienes problema con esto puedes intentarlo.
  #4 (permalink)  
Antiguo 06/07/2013, 22:25
Avatar de zetahosting  
Fecha de Ingreso: octubre-2011
Mensajes: 119
Antigüedad: 12 años, 7 meses
Puntos: 2
Respuesta: Evitar bots en un formulario

Te recomiendo que utilices recaptcha.
http://www.google.com/recaptcha


Abrazo
__________________
Excelente WebHosting -> www.zetahosting.net
[email protected]
Twitter: @zetahosting
  #5 (permalink)  
Antiguo 07/07/2013, 01:07
Avatar de 0123  
Fecha de Ingreso: noviembre-2012
Ubicación: Entre la consola, el coda y un poco de photoshop
Mensajes: 263
Antigüedad: 11 años, 5 meses
Puntos: 10
Respuesta: Evitar bots en un formulario

Buenas a todos,

Me parece que no me he explicado bien, jeje. Yo tengo un formulario de login normal y corriente. Donde evidentemente no voy a poner un captcha de primeras, si no que lo quiero poner a la segunda vez que intente validar sus datos. Vamos, como la mayoria de logins del planeta.

La duda que tengo es si la IP es el unico parametro para identificar un Bot de verdad.

Yo no tengo ningun problema en poner el captcha, eso es facil... el problema es que debo identificar si ese usuario ha ejecutado mas de una vez el formulario y para eso debo identificar al usuario si o si.

Suelo usar cookies, pero los bots no los guardan...

Sobre comentas, metacortex... es buena idea... pero me da yuyu que un hacker listillo me haga una araña que me ejecute el form a fuerza bruta, y si es un buen informatico ya se enterara del campo oculto.

Asi que mi pregunta es: ¿Solo existe la IP para identificar a un usuario o... la IP se puede falsificar?
  #6 (permalink)  
Antiguo 07/07/2013, 01:32
marcofbb
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Evitar bots en un formulario

La ip se puede cambiar mediante proxy, y la IP es rotativa, nunca queda una única para X usuario.

Sobre lo del formulario, ya varios te dieron respuesta, y creo que no te sirvieron porque a mi entender estas planteando mal problema. Luego de un rato, pensé que tu problema puede ser que se crean varias consultas al apretar F5 aqui tienes la solucion a eso

http://www.forosdelweb.com/f18/no-re...-veces-386109/
http://www.pronexo.com/noticias-0000068-p1

PD: Tambien puedes usar akismet y su api para bloquear bots ya detectados y reportados

Saludos
  #7 (permalink)  
Antiguo 07/07/2013, 03:48
Avatar de guardarmicorreo  
Fecha de Ingreso: noviembre-2012
Ubicación: Córdoba
Mensajes: 1.153
Antigüedad: 11 años, 5 meses
Puntos: 84
Respuesta: Evitar bots en un formulario

Cita:
Iniciado por 0123 Ver Mensaje
Buenas a todos,

Me parece que no me he explicado bien, jeje. Yo tengo un formulario de login normal y corriente. Donde evidentemente no voy a poner un captcha de primeras, si no que lo quiero poner a la segunda vez que intente validar sus datos. Vamos, como la mayoria de logins del planeta.

La duda que tengo es si la IP es el unico parametro para identificar un Bot de verdad.

Yo no tengo ningun problema en poner el captcha, eso es facil... el problema es que debo identificar si ese usuario ha ejecutado mas de una vez el formulario y para eso debo identificar al usuario si o si.

Suelo usar cookies, pero los bots no los guardan...

Sobre comentas, metacortex... es buena idea... pero me da yuyu que un hacker listillo me haga una araña que me ejecute el form a fuerza bruta, y si es un buen informatico ya se enterara del campo oculto.

Asi que mi pregunta es: ¿Solo existe la IP para identificar a un usuario o... la IP se puede falsificar?
si el captcha es para evitar que un bot se registre, ponlo antes de mostrar el formulario de loggin, si el captcha no es para eso, ponlo solo para que usuarios registrados puedan verlo y si quieres controlar las veces que un usuario registrado ha accedido al formulario solo debes añadir un campo en una tabla de tu base de datos para que una vez enviado el formulario por primera vez quede grabado como 1 (true) y si no ha enviado nunca el formulario pues null (false) o 0 y con un condicional si ese campo tiene un valor u otro le dejas ver el formulario o no.
  #8 (permalink)  
Antiguo 07/07/2013, 09:37
Avatar de metacortex
Viejo demente
 
Fecha de Ingreso: junio-2004
Ubicación: Caracas - Venezuela
Mensajes: 9.027
Antigüedad: 19 años, 11 meses
Puntos: 832
Respuesta: Evitar bots en un formulario

Cita:
Iniciado por 0123 Ver Mensaje
Sobre comentas, metacortex... es buena idea... pero me da yuyu que un hacker listillo me haga una araña que me ejecute el form a fuerza bruta, y si es un buen informatico ya se enterara del campo oculto.
Disculpa pero esto no tiene sentido. Una cosa es un bot y otra un "hacker". Los bots maliciosos son aplicaciones desarrolladas genéricamente para atacar una gran cantidad de sitios web. Por lo tanto programar un bot para un solo sitio no es "rentable" para el atacante.

Por otra parte, no es cuestión de "yuyu" sino de documentarse sobre el tema y -sobre todo- experimentar. Igual una persona pasaría 20 años sin salir de su casa porque "le da yuyu" que un ladrón lo robe apenas ponga un pie en la calle.

Creo que hasta el momento te han dado buenos tips para comenzar. Es hora de salir de la sala situacional y pasar a la práctica.
  #9 (permalink)  
Antiguo 08/07/2013, 05:55
Avatar de 0123  
Fecha de Ingreso: noviembre-2012
Ubicación: Entre la consola, el coda y un poco de photoshop
Mensajes: 263
Antigüedad: 11 años, 5 meses
Puntos: 10
Respuesta: Evitar bots en un formulario

Muchas gracias a todos... :D
  #10 (permalink)  
Antiguo 08/07/2013, 11:54
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Evitar bots en un formulario

podrias añadir un campo de texto extra y ocultarlo con css, los usuarios no lo veran ni rellenaran pero un bot si y habra caido en la trampa , despues verificamos si el campo extra esta vacio o rellenado si esta rellenado es un bot.

tambien se deberia poner un mensaje en caso de que algun usuario vea el campo algo como !SI VES ESTO NO RELLENES ESTE CAMPO !

Haber si te sirve

podrias hacer esta deteccion en el primer intento y ya en el segundo lanzar el captcha

para identificar al usuario creas una session digamos para guardar intentos

Código PHP:
Ver original
  1. if(empty($_SESSION['intentos'])){
  2.  
  3. $_SESSION['intentos']=1;
  4.  
  5. }else{
  6.  
  7. // recomendaria regenerar el id cada peticion
  8.  
  9.     if($_SESSION['intentos'] >= 3){
  10.  
  11.     exit('maximo de intentos superados');
  12.  
  13.     }
  14.  
  15.     $_SESSION['intentos']++;
  16. }

Última edición por webankenovi; 08/07/2013 a las 12:13

Etiquetas: bots, formulario
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:28.