Captcha oculto. ¿Puede resolverlo un bot?

Iniciado por MA40, 20 Agosto 2021, 14:04 PM

0 Miembros y 1 Visitante están viendo este tema.

MA40

Hola.

Utilizando un javascript que encontré en Internet para poner un Captcha en una web, lo que he hecho es ponerlo oculto.

Para que aparezca hay que deslizar la barra de desplazamiento hacia abajo.

Según tengo entendido, los bots no pueden deslizar con el puntero como hace un humano con el ratón.

¿Creéis que este Captcha puede resolverlo algún bot?

Puede verse en esta dirección: http://www.edicionesma40.com/downloads/captcha.htm

¿Qué opináis?

Un saludo.
¿Qué sucedería si se enfrentara una fuerza imparable contra un muro inamovible?
Visita Ediciones MA40 - Libros clásicos de ajedrez y este blog de ajedrez
ChessFaucet.com - Gana bitcoins jugando al ajedrez contra el ordenador

Danielㅤ

Hola, sí claro que un bot puede resolver tu captcha, en el mismo código fuente está la función que crea el captcha que ni siquiera está ofuscado:

Código (javascript) [Seleccionar]
      function createCaptcha() {
        //clear the contents of captcha div first
        document.getElementById('captcha').innerHTML = "";
        var charsArray =
        "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ@!#$%^&*";
        var lengthOtp = 6;
        var captcha = [];
        for (var i = 0; i < lengthOtp; i++) {
          //below code will not allow Repetition of Characters
          var index = Math.floor(Math.random() * charsArray.length + 1); //get the next character from the array
          if (captcha.indexOf(charsArray[index]) == -1)
            captcha.push(charsArray[index]);
          else i--;
        }
        var canv = document.createElement("canvas");
        canv.id = "captcha";
        canv.width = 200;
        canv.height = 50;
        var ctx = canv.getContext("2d");
        ctx.font = "25px Georgia";
        ctx.strokeText(captcha.join(""), 0, 30);
        //storing captcha so that can validate you can save it somewhere else according to your specific requirements
        code = captcha.join("");
        document.getElementById("captcha").appendChild(canv); //adds the canvas to the body element
      }


Todo lo que haga un navegador, puede hacer un bot, incluso hay muchas librerías para leer y ejecutar javascript en otros lenguajes.


Saludos
¡Regresando como cual Fenix! ~
Bomber Code © 2021 https://www.bombercode.net/foro/

Ayudas - Aportes - Tutoriales - Y mucho mas!!!

MinusFour

Cita de: MA40 en 20 Agosto 2021, 14:04 PM
Hola.

Utilizando un javascript que encontré en Internet para poner un Captcha en una web, lo que he hecho es ponerlo oculto.

Para que aparezca hay que deslizar la barra de desplazamiento hacia abajo.

Según tengo entendido, los bots no pueden deslizar con el puntero como hace un humano con el ratón.

¿Creéis que este Captcha puede resolverlo algún bot?

Puede verse en esta dirección: http://www.edicionesma40.com/downloads/captcha.htm

¿Qué opináis?

Un saludo.


El bot si que puede scrollear:

Código (javascript) [Seleccionar]
$('div.centrado-marco-captcha').scrollTop = 200

engel lex

por otro lado, asumes que el bot navega como un humano, pero incluso si usa sistemas como selenium, lo que uno hace cuando crea bots es que vas leyendo codigo fuente...
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

#!drvy

Al margen de si puede hacerlo un bot o no (que la respuesta es sí), la pregunta realmente es como pretendes validar que la respuesta es correcta sin dejárselo al cliente.

Ahora mismo toda tu validación se puede bypasear ya sea leyendo la variable code o directamente asignando el valor de code al input:

Código (javascript) [Seleccionar]
document.getElementById("captchaTextBox").value = code;

Estas cosas se generan y validan serverside para que el cliente no tenga la posibilidad de trastear con ello.

Saludos


Danielㅤ

Correcto lo que dicen los compañeros, engel lex tiene razón un bot usando selenium es como si usara un navegador.

También es muy cierto lo que dice #!drvy, esas operaciones se generan y validan desde el servidor nunca del cliente, porque el cliente tranquilamente puede modificar/bypassear/falsear esos valores o simplemente verlos cuando no debería, por eso esas operaciones nunca se deben hacer por medio del cliente (por ejemplo desde javascript), sinó desde el servidor (por ejemplo usando PHP).

En resumen podes hacer las mismas operaciones y validaciones usando PHP, que el cliente no pueda modificar ni saber como está creado el captcha, es decir el algoritmo que usas, nunca tenés que permitirle al cliente que maneje las operaciones y validaciones porque las puede alterar y sería muy vulnerable.


Saludos
¡Regresando como cual Fenix! ~
Bomber Code © 2021 https://www.bombercode.net/foro/

Ayudas - Aportes - Tutoriales - Y mucho mas!!!

MA40

Cita de: #!drvy en 23 Agosto 2021, 01:25 AM
Al margen de si puede hacerlo un bot o no (que la respuesta es sí), la pregunta realmente es como pretendes validar que la respuesta es correcta sin dejárselo al cliente.

Ahora mismo toda tu validación se puede bypasear ya sea leyendo la variable code o directamente asignando el valor de code al input:

Código (javascript) [Seleccionar]
document.getElementById("captchaTextBox").value = code;

Estas cosas se generan y validan serverside para que el cliente no tenga la posibilidad de trastear con ello.

Saludos



¡Joooooderrrrr!

Nunca oí a nadie con tanta razón.

El caso es que ese javascript está por todo Internet como si sirviera para algo, y ahora me doy cuenta que es sólo KK. :-\

En fin... de los errores se aprende 100 veces más que de los aciertos.

Un saludo y muchas gracias a todos.
¿Qué sucedería si se enfrentara una fuerza imparable contra un muro inamovible?
Visita Ediciones MA40 - Libros clásicos de ajedrez y este blog de ajedrez
ChessFaucet.com - Gana bitcoins jugando al ajedrez contra el ordenador

engel lex

#7
Cita de: MA40 en 23 Agosto 2021, 16:29 PM

El caso es que ese javascript está por todo Internet como si sirviera para algo, y ahora me doy cuenta que es sólo KK. :-\


es que estás interpretandolo mal... js está para hacer que las paginas se comporten de una manera específica ante el cliente... es parte de ese trio html+css+js , es como que digas que html no sirve para nada porque sin css es feo, pero tienes que entender que en el codigo que tiene el cliente no hay nada seguro, aplica desde web, hasta aplicaciones en c... lo que cambia es la dificultad para explotarlo
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

MA40

No, no,  @engel lex, creo que no me expliqué bien (o no me entendiste).

No me refiero a que javascript no sirve para nada, NO, ya sé lo importante que es para la programación web, IMPRESCINDIBLE.

Me refiero a que yo cogí el javascript del Captcha de una web de programación, y está en muchas otras webs parecidas, y ESE javascript (el del Captcha) no sirve para nada. ¿No?

Un saludo.
¿Qué sucedería si se enfrentara una fuerza imparable contra un muro inamovible?
Visita Ediciones MA40 - Libros clásicos de ajedrez y este blog de ajedrez
ChessFaucet.com - Gana bitcoins jugando al ajedrez contra el ordenador

engel lex

ahhh!  :xD

es que me insultaste al js y me pongo agresivo! :xD

puede que tal vez haya un esquema de seguridad no contemplado en ese código
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.