Corsi on-line

Un campo hidden come alternativa al CAPTCHA

Tra gli sviluppatori esiste una diffusa convinzione, pienamente condivisibile, seconda la quale per quanto riguarda i codici di controllo per i form, qualsiasi alternativa è preferibile al CAPTCHA; la maggior parte delle soluzioni basate su JavaScript sono facilmente aggirabili, alcune espongono i moduli a pericoli maggiori che l’assenza di un controllo, quindi cosa fare per non esporre gli utenti alla scomodità del CAPTCHA?

In questo post vi propongo un piccolo esperimento, per quanto riguarda alcuni progetti che ho sviluppato ha funzionato, ma al momento non ho ancora abbastanza elementi per ritenerlo completamente sicuro. La soluzione consiste nei seguenti passaggi:

  1. inserite un campo hidden nel codice HTML del vostro form, questo deve essere vuoto, cioè privo di valore;
  2. non associate un controllo JavaScript al campo hidden (ovvio!);
  3. effettuate un controllo lato server sull’input, se il valore rimane vuoto anche dopo l’invio il controllo avrà esito positivo.

Il principio di questo sistema si appoggia sul fatto che un bot non può non compilare un campo hidden, naturalmente ciò non vi difenderà dall spam inviato manualmente per il quale, però, non è efficace neanche CAPTCHA.

Ripeto: si tratta soltanto di un esperimento sulla cui efficacia non do alcuna garanzia, ma il sistema di cui parlo non viene utilizzato soltanto dal sottoscritto; nel caso, fatemi sapere se per i vostri script è risultato efficace.

Post correlati
  • ciao
    ottima idea.
    penso però che sia difficile sapere quello che chiedi
    “fatemi sapere per per i vostri script è risultato efficace”
    perchè uno dovrebbe fare una statistica significativa (con numeri alti e per un lungo periodo)
    es.
    se dal mio form o nel mio forum prima dell’adozione ricevevo 300 spam/gg e dopo 100 spam/gg (considerati anche altri parametri)
    posso dire si funziona

  • Claudio Garau

    Gianni, l’obiettivo è quello di ricevere meno spam, se ciò si verifica si può già affermare di aver ottenuto un risultato positivo.

  • ciao
    sull’obbiettivo sono d’accordo, è sullo studio dell’efficacia di un qualsiasi metodo che facevo l’osservazione.
    il fatto di sapere se effettivamente la diminuzione c’è stata o se è un caso fortuito

  • Claudio Garau

    L’ideale sarebbe sperimentare la soluzione in un sito che utilizza anche altri sistemi di controllo ed effettuare un confronto, in un mese si dovrebbe già cominciare a valutarne l’efficacia. Tanto gli spambot fanno in fretta a rilevare un form anche in un sito a minimo traffico.

  • ciao
    mi risulta difficile in quanto dal mio form mi arriva pochissimo spam (max 3-4 spam/settimana) quindi difficile riuscire a capirne l’efficacio.

    p.s.
    io per controllo uso quella che ho chiamato la “CAPTCHA dei poveri” e, dato il numero sembra funziare

  • Non penso che sia possibile evitare lo spam a priori è un po’ come inventare la serratura perfetta, prima o poi te la scassinano comunque, la differenza è in quanto dura quel prima o poi.
    Normalmente un bot agisce così: scansione della pagina tramite javascript alla ricerca dell’elemento form, se presente cerca il method per sapere se get o post, poi l’action per copiare l’url di riferimento, quindi cerca campi con type=”text” e textarea e ne riempe i value con le sue frasi preregistrate (che magari sono imagazzinate in un altro url).
    Credo che per hidden possa fare delle ricerche a parte, a lui interessano text, textarea, get|post e action, costruisce in memoria un semplice javascript con questi dati e invia il suo form a raffica.
    Se c’è un captcha (comunque campo text) allora cerca il modo di fregarlo, in genera scansiona i vari modelli per vedere se il form usa qualcosa di conosciuto, sempre gli stessi alla fine, si sfruttano che so le api di google o di yahoo, se no tenta di risolverlo con metodi comunque sempre conosciuti.
    Ma parliamo di una macchina, agisce non in modo casuale ma sempre programmato e quindi individuabile, se scriviamo il nome del campo name=”captcha” già gli diamo un input per comprendere che c’è.
    Io ho realizzato un semplice captcha che chiede di scrivere un numero espresso in cifre riportandolo in numero, esempio: cinque e tu scrivi 5.
    Non sono stato mai bucato da un bot, ma posso sempre chiedere di fare delle domande, che so: animale che fa miao = gatto. Stupido ma funziona ed è anche accessibile ai non vedenti.
    Quello che si può fare penso è usare i due metodi in contemporanea e verificare che tutti e due diano esisto positivo, se uno dei due è bucato allora non invia la email.

    M.

  • Claudio Garau

    Questo commento vale un post MarcoGrazia!

I più letti del mese
Tematiche