Quanto è strong visualCaptcha?

8

Mi piace l'interazione dell'utente di visualCaptcha , ma sto mettendo in dubbio la quantità di protezione che fornisce:

Dato che ci sono solo 5 immagini (di default), non è semplicemente una questione di 1 su 5 per ottenere l'immagine giusta?

Inoltre, l'intero processo viene avviato inviando una richiesta di start/X , dove X è il numero di opzioni da generare. Per quanto ne so, un bot potrebbe iniziare con X = 2 invece di 5 e ottenere il 50% dei tentativi a destra.

    
posta Jasny - Arnold Daniels 13.03.2015 - 21:44
fonte

5 risposte

6

Ci sono due notevoli debolezze nella demo live che rendono abbastanza banale la rottura:

  1. Ci sono solo 5 possibili risposte alla domanda captcha, quindi un bot ha una probabilità del 20% di risolvere il captcha selezionando un simbolo casuale. La demo non mi ha messo al bando dopo aver selezionato una risposta sbagliata per 20 volte di seguito, quindi non c'è motivo per cui un bot non possa continuare a indovinare fino a quando non ha ottenuto una risposta corretta per caso.
  2. Esiste solo un insieme molto limitato di immagini che non sono in alcun modo alterate. Appaiono sotto URL diversi, ma hanno sempre lo stesso aspetto, quindi un bot può identificarli caricando e decodificando le immagini. Inoltre, il sistema si riferisce a ogni immagine con la stessa parola ogni volta. Ciò consentirebbe semplicemente di dire al bot quale parola significa quale immagine.

Alcune idee per rendere il captcha più strong:

  • Chiedere all'utente di contrassegnare più oggetti e lasciarli passare solo quando hanno contrassegnato questi e solo questi oggetti. Ciò renderebbe l'ipotesi casuale molto meno efficiente.
  • Divieto di indirizzi IP per alcuni minuti dopo molte risposte sbagliate di seguito
  • Utilizza un set di immagini molto più grande
  • Utilizza un dizionario di stringhe ancora più grande per farvi riferimento
  • Utilizza algoritmi di alterazione delle immagini con parametri randomizzati per alienare un po 'le immagini in modo che diventi più difficile riconoscerle automaticamente

Ricorda che nessun captcha è veramente indistruttibile. Tutto quello che puoi sperare è aumentare lo sforzo che un utente malintenzionato deve investire per romperlo. Ma questo può essere tutto ciò di cui hai bisogno. I captcha sono una delle poche aree in cui la sicurezza attraverso l'oscurità può ripagare. Gli spammer cercano frutti a bassa attaccatura. Quando usi un'oscura soluzione captcha prodotta in casa e non sei un bersaglio particolarmente prezioso, molti spammer saranno troppo pigri per capirlo. Quando sei un obiettivo particolarmente prezioso, assolderanno solo un gruppo di persone da un paese del terzo mondo per risolvere i tuoi captcha. E non puoi difenderti da questo senza rendere inutilizzabile il tuo sito web per gli utenti abituali.

    
risposta data 13.03.2015 - 22:16
fonte
2

Per provarlo, ho scritto un piccolo bot che tenta di pubblicare la demo visiva captcha .

Se per prima cosa avvia la sessione captcha, la dicitura è richiesta solo 2 opzioni utilizzando http://demo.visualcaptcha.net/start/2 . Poi seleziona uno dei due possibili risultati e post in http://demo.visualcaptcha.net/try .

Risultato:

✓☓☓✓✓✓☓☓☓☓☓☓☓✓✓☓☓☓☓☓✓☓✓✓☓✓✓☓✓✓☓✓✓✓✓✓☓✓☓✓✓✓☓✓☓✓☓✓✓✓
☓✓✓☓✓☓✓✓☓☓✓☓✓✓☓☓✓☓✓✓✓☓✓☓☓✓✓☓✓☓✓☓☓☓☓☓✓✓☓☓✓☓☓✓☓✓☓☓☓✓
✓☓☓✓✓✓☓✓☓☓✓☓☓✓☓☓☓☓☓☓✓✓✓☓✓☓✓☓☓☓✓✓☓✓☓☓✓✓☓☓☓✓✓☓✓☓☓✓✓✓
☓✓☓✓✓☓☓✓✓☓☓☓✓☓☓✓☓✓☓✓✓☓☓☓✓✓☓✓☓✓✓✓✓✓✓✓✓✓☓☓✓☓☓☓✓✓☓✓✓☓
☓✓☓☓✓✓✓✓☓✓✓✓☓✓✓☓☓✓☓✓✓✓✓☓☓✓✓✓☓☓✓☓✓☓✓✓✓☓✓✓☓☓✓☓✓☓☓☓☓☓
Of the 250 tries, I succeeded 127 times and failed 123 times.

VisualCaptcha è chiaramente molto pericoloso.

Utilizzando un numero fisso di immagini (ad es. 5), invece di lasciare che il client scelga il numero di immagini, aiuterebbe a ridurre i tentativi riusciti a 1 su 5. Sebbene la ricognizione non sia sufficiente per la maggior parte dei casi d'uso.

<?php

/**
 * Try posting to the visualCaptcha demo
 * @return boolean  true if posted successfully
 */
function tryVisualCaptcha()
{
    $curl = curl_init();
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl, CURLOPT_COOKIEJAR, "/tmp/visualcaptcha-cookies.txt");
    curl_setopt($curl, CURLOPT_COOKIEFILE, "/tmp/visualcaptcha-cookies.txt");

    curl_setopt($curl, CURLOPT_URL, "http://demo.visualcaptcha.net/start/2");
    $ret = curl_exec($curl);
    $result = json_decode($ret);

    $post = [$result->imageFieldName => $result->values[0]];

    curl_setopt($curl, CURLOPT_URL, "http://demo.visualcaptcha.net/try");
    curl_setopt($curl, CURLOPT_POST, true);
    curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($post));
    curl_exec($curl);

    $info = curl_getinfo($curl);
    return strpos($info['redirect_url'], 'validImage') !== false;
}

// Main
$results = [0 => 0, 1 => 0];

for ($i = 1; $i <= 250; $i++) {
    $success = tryVisualCaptcha();
    $results[(int)$success]++;

    echo $success ? "✓" : "☓", $i % 50 === 0 ? "\n" : "";
}

echo "Of the ", array_sum($results), " tries, I succeeded ", $results[1],
  " times and failed ", $results[0], " times.\n";
    
risposta data 13.03.2015 - 22:56
fonte
1

Tutto quello che dovresti fare è dividere il captcha in singole immagini ed eseguire una ricerca di immagini su Google per ciascuna immagine e la parola target. E semplicemente scegli quello che ha il maggior numero di risultati. Da quel punto sono abbastanza sicuro che si potrebbe ottenere maledettamente alta precisione.

Puoi eseguire una ricerca per

"Type below the answer to what you hear" OBJECT

dove OBJECT è la parola dell'immagine

Esempi: Lampada , Car , Blocca , Bandiera

    
risposta data 14.03.2015 - 15:27
fonte
1

VisualCaptcha è un'ottima soluzione per UX, ma può essere infranta con una percentuale di successo del 100%.

Come Proof-of-Concept, c'è un piccolo script per rompere il 100% di VisualCaptcha incluso in questo post del blog

Esistono diverse tecniche per aumentare la sicurezza di VisualCaptcha. Queste tecniche non saranno integrate nel "core" di VC, ma uno sviluppatore può decidere di implementarle se necessario, come discusso con Bruno Bernardino .

    
risposta data 11.07.2016 - 18:27
fonte
-1

Full disclosure: io sono l '"inventore" di visualCaptcha.

Prima di tutto, mi piace vedere così tante persone interessate e usare visualCaptcha. Ha ricevuto molta attenzione e amore negli ultimi 6 mesi. È incredibile vedere sempre più persone che lo utilizzano e sono interessati a migliorare e "crackare".

Voglio che tutti capiscano il problema che risolve visualCaptcha è la User Experience di Captchas, pur non essendo insicura (o insicura come la maggior parte dei captcha visivi, quando questa è stata creata).

Se hai bisogno di un captcha molto sicuro, ci sono molte cose là fuori, come ReCaptcha, ma i tuoi utenti avranno la peggiore esperienza (Google ci ha lavorato duramente, però, roba buona).

In definitiva, sta a te decidere cosa è più importante per il tuo caso d'uso.

Philip ha fatto un ottimo punto sul fatto che non valesse la pena spammer per rompere il tuo captcha. Una delle grandi cose di visualCaptcha è la personalizzazione. Puoi facilmente cambiare il modo in cui funziona (URL, immagini, numero di immagini, ecc.) E quindi sarà sempre più difficile per loro alla fine prendersi la briga di creare qualcosa per decifrarlo.

Inoltre, molti noti siti governativi di tutto il mondo utilizzano con successo le versioni personalizzate di visualCaptcha. Non c'è stato un reclamo uno su di esso "rotto" da un bot. E quando ciò accadrà, ti aiuteremo a prevenirlo.

Alcuni altri URL per riferimento: link link

    
risposta data 14.03.2015 - 21:11
fonte

Leggi altre domande sui tag