Foros del Web » Programando para Internet » PHP »

Para que srive el captcha

Estas en el tema de Para que srive el captcha en el foro de PHP en Foros del Web. Hola a todos. Mi duda sería, ¿por qué es necesario el uso del captcha? Os cuento, yo entiendo que el captcha se utiliza para evitar ...
  #1 (permalink)  
Antiguo 07/03/2011, 04:45
 
Fecha de Ingreso: febrero-2011
Mensajes: 156
Antigüedad: 13 años, 2 meses
Puntos: 4
Para que srive el captcha

Hola a todos. Mi duda sería, ¿por qué es necesario el uso del captcha? Os cuento, yo entiendo que el captcha se utiliza para evitar inserciones masivas. Y, ¿cómo pueden producirse estas inserciones masivas? Mediante refrescos de página. Es decir:

- Página A: Inserto un dato

Analizando dos posibles casos:

1. Continúo en Página A, y refresco dicha página.
2. Voy a la págona B. Acto seguido pulso sobre el botón "Volver Atrás".

En ambos casos, se refrescará la página A. Por lo tanto, se solicitará al usuario si desea enviar nuevamente los datos del formulario. Si se dice que sí, se envían nuevamente y puede producir una nueva inserción.

Bien, con el captcha esto se soluciona. Ya que antes de efectuar la inserción, comprueba que lo que se haya escrito coincida con un número aleatorio que cambia cada vez que se refresca la página. Al enviar nuevamente los datos, toma el valor que se escribió en el momento que se realizó la petición de inserción, y lo compara con el nuevo valor de captcha. Deben coincidir. Y, eso sólo debería pasar en el momento que realmente se solicitó la inserción. Entonces, cuando se habla de inserciones masivas por proceso indeseados, que serían ¿proceso que realizan múltiples rerfescos sobre una página? ¿O que navegan hacia atras y adelante, provocando refrescos? ¿O el uso del captcha abarca más posibilidades?

Os cuento el motivo de mi duda. Tengo una aplicación web en al que hay multitud de páginas, las cuales interactúan con la base de datos. Pare evitar poner captchas en todas ella, soluciono el tema de la interacción con la base de datos y los refrescos mediante una variable de SESSION. La uso como semáforo. Si no está activada, no interactúo con la base de datos. Esta variable la actualizo vía ajax. Algo del estilo:

///// Función JS /////
fun_guardar()
{
- Hago una petición al servidor mediante AJAX, modificando el valor de la variable de sesion a "S" ($_SESSION["bd_ok"])
- Informo un chivato a nivel local para indicarle que quiero insertar (txt_insertar = 'S')
}

/////// Tratamiento inicial de mi página php
if ( $_POST["txt_insertar"] == 'S' and $_SESSION["bd_ok"] == 'S' )
{
// Desactivo el semáfono, para evitar refrescos indeseados
- $_SESSION["bd_ok"] = 'N'
- Realizo el insert
}

En mi formulario, hay campos y un botón. Este botón provocará el insert mediante onclick="javascript:fun_guardar();"

De este modo, sólo se realizará el insert si se hace mediante el botón. Ya que , es el único sitio dónde cambio el valor de la variable de sesion bd_ok. La página, al recargarse, analiza esta variable de sesion. Si vale "S", lo primero que hace es dejarla en "N". Así, la variable de sesion "bd_ok" valdrá "N" hasta que se pulse nuevamente el botón, que pasará a "S". O dicho de otro modo, por muchos refrescos sobre la página no se producirá ningún nuevo insert ( ya que $_SESSION["bd_ok"] vale 'N' ) a menos que se haga mediante el botón.

Entonces, si esto es correcto, ¿Para que sería necesario el captcha? ¿No es más limpia esta solución? No le obligas al usuario a meter un código que a él no le aporta nada... Y el programador no tiene que ir incluyendo captchas a todas sus páginas donde se interactúa con al base de datos...

Espero que alguien me aclare un poco este tema. Muchísimas gracias por vuestra ayuda y vuestro tiempo. Entiendo que me extendido un poco, pero quería que se entendiese bien mi consulta. Además que, posiblemente, alguien pueda encontrar intersante esta solución de la variable de sesion.
  #2 (permalink)  
Antiguo 07/03/2011, 06:20
 
Fecha de Ingreso: febrero-2011
Mensajes: 156
Antigüedad: 13 años, 2 meses
Puntos: 4
Respuesta: Para que srive el captcha

Disculpad, se me olvidó hacer un última apreciación. El captcha evita que proceso automáticos ( programa ) rellenen formularios y por lo tanto hagan inserciones múltiples. Vale. Pero, trabajando como os comentaba, esto es imposible que pase, no? Por que sólo se puede realizar el insert si se pasa por la función fun_guardar() y ésta sólo es llamada al pulsar sobre el botón de guardar cambios ( onclick="javascript:fun_guardar();" )... Por que entiendo que esos procesos automáticos, para enviar los datos del formulario, lo hará mediante un "submit. En nigún caso podría pasar por la función "fun_guardar", no? ( teniendo en cuenta que "fun_guardar" estaría en un JS externo de modo que no pudiese verse el código fuente )
  #3 (permalink)  
Antiguo 07/03/2011, 07:18
 
Fecha de Ingreso: diciembre-2010
Mensajes: 51
Antigüedad: 13 años, 4 meses
Puntos: 2
Respuesta: Para que srive el captcha

Pero un robot se puede registrar igual, por lo menos una vez...
  #4 (permalink)  
Antiguo 07/03/2011, 09:44
 
Fecha de Ingreso: febrero-2011
Mensajes: 156
Antigüedad: 13 años, 2 meses
Puntos: 4
Respuesta: Para que srive el captcha

Sólo si el robot, una vez rellenado el formulario, implementa el código que hay en la función JS "fun_guardar", que es la que se ejecuta cuando se pulsa sobre el botón "Guardar". Ya que, "fun_guardar" modifica el valor de una variable de sesion ( por ejemplo, dejándola a "S") vía ajax. Justamente la que hace que permita o no la inserción. Si esa variable de sesion, no vale "S" no inserta. Y sólo valdrá "S" si se ejecuta el código de fun_guardar.

Etiquetas: captcha
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 22:54.