I campi fantasma come alternativa al captcha

Cliccare per ingrandire

Una particolare alternativa al captcha sono i campi fantasma.

Questa tecnica (vedi immagine) l’ho scoperta nel sito radio.blog.club.

 

Come funziona

Estremamente semplice il meccanismo: un testo in alta evidenza che indica di NON compilare i campi del profilo. Sono campi "fantasma" inseriti appositamente per fare cadere in inganno gli auto-compilatori (hanno un nome esatto???) di moduli online.

 

Pregi

Non vi è alcun controllo javascript, quindi massima compatibilità anche per i siti accessibili dove javascript non è utilizzabile, se non con una alternativa html base.
Per "fregare" il sistema è necessario che gli automatismi di spam riescano a leggere il testo di avvertenza e a capire quali i campi da non compilare.

 

Difetti

Considerando le abitudini di navigazione, specie degli italiani, spesso e volentieri i testi non vengono letti, anche se in risalto: una questione che fa impazzire anche gli esperti di usabilità. Quindi c’è il rischio che molti utenti vadano a compilare tutti i campi (come ho fatto io…), considerando il messaggio una classica frase per niubbi.

Loading Facebook Comments ...

20 pensieri su “I campi fantasma come alternativa al captcha

  1. cedmax

    non basterebbe nascondere i campi fantasma con un bel display:none nel css sul contenitore degli stessi?

    o meglio chiamare dei campi nascosti (sempre via css) con nomi standard (name, email) e lasciare in vista campi che si chiamino con valori non standard (che so: asfasf per la mail e gdsgdgddgs per il nome) e controllare dopo il submit che i campi "fake" siano vuoti?

    uno spam bot di default tende a riempire il campo email, se non erro

    Rispondi
  2. fremyd

    bè l’ idea mi sembra interessante..
    magari sarebbe perfezionabile ad esempio aggiungendo all’ interno della text box "non modificare" e controllando che effettivamente tale testo non venga modificato…

    Ad ogni modo, è possibile eliminare il 90% dello spam anche con strategie diverse: ad esempio modificando nome di pagine/variabili e immagini captcha dei forum classici o dei CMS (il captcha di phpBB in figura viene letto correttamente da un apposito bot con una probabilità del 97-98 %)
    Inoltre con una attenta analisi del traffico un buon admin puo’ realizzare un piccolo anti-spam back-end senza captcha in grado di bloccare la maggior parte del testo-spam..
    io sul sito che ho inserito in firma non posso usare javascript o captcha (per mantenerlo accessibile a bassissimo costo da cellulari oltre che da web) e, per ora, con una serie di controlli incrociati, riesco a filtrare lo spam, in maniera del tutto trasparente per gli utenti.. l’ idea dei campi fantasma puo’ essere comunque un ulteriore aiuto…
    Il numero di controllo testuale che trovo qui è facilemente individuabile da un bot.. anke se nella pratica, probabilmente aiuta molto, sicuramente molto + del captcha in phpBB, per la ragione suddetta, ovvero il fatto di non essere standard..

    Rispondi
  3. Merlinox

    @cedmax: avevo provato a mettere dei nomi assurdi, ma evidentemente fa un controllo DOM sugli elementi del FORM.
    Per quanto riguarda il display potrebbe essere una bella idea, bisogna vedere se la becca o no.

    @fremyd: prima di farmi il captcha avevo provato anch’io usando analisi del http referer e controllo delle voci inserite con una black list di parole ma era un lavoro lungo e poco utile.

    Il mio captcha però finora non è ancora stato bucato. Unico difetto che senza JS non vanno i commenti.
    http://tinyurl.com/yvglhz

    Rispondi
  4. ced

    @merlinox: per il display:none non credo si metta a fare controlli incorciati col css (anche perchè io metterei il display hidden non sull’input, ma sul div contenitore, quindi diventa anche complicato per il bot starci dietro, imho).

    per quanto riguarda i nomi non standard (per esperienza personale) funziona, ma non è infallibile.

    Rispondi
  5. Merlinox

    @ced: effettivamente magari la sto prevedendo delle cose in più.
    Certamente con i CSS potrebbe essere una ottima soluzione. Perfettamente compatibile anche con i regimi di accessibiltà, basta fare un check di esistenza del campo FORM.xxx sulla pagina di destinazione. Ottima idea!

    Rispondi
  6. fremyd

    si l’ idea di ced è carina.. i bot fanno delle rikieste associando testo a tutti gli elementi nelle form indistintamente..

    @Merlinox: avevo gia’ scritto che probabilmente il tuo captcha va molto bene.. Dicevo solo che, se ci fosse una convenienza, è facile creare un bot in grado di leggere il tuo testo.. ma ovviamente nessuno crea bot così specifici per qualche sito..

    Per quanto riguarda l’ analisi io sono stato costretto ad implementare una cosa del genere dal non usare javascript, immagini e css (pagine accessibili anke da cell, gratis nel caso di cell h3g)
    A parte che l’ http_referer non penso ti possa aiutare, io ho praticamente eliminato lo spam basandomi su vari fattori tra i quali anke una blacklist di ip associati a spammer (ip statici localizzati in thailandia e simili..) Ad ogni modo, il mio è un caso particolarissimo.. in linea + generale, esistono degli anti-spam realizzati ad-hoc per essere incorporati nei blog/cms + usati (akismet per wordpresss, etc..)
    Per i casi specifici, ogni soluzione personale e ragionevole si rivela spesso molto buona, proprio per l’ originalità come dicevo sopra..

    Rispondi
  7. Merlinox

    Purtroppo amici sviluppatori in C mi hanno garantito che creare meccanismi automatici che personalizzano http_referer e remote_addr è una cosa non complessa.

    @fremyd: come si fa a creare un bot che permette di leggere il mio testo? ho provato a pensarci ma non riesco. Thanks 🙂

    Rispondi
  8. fremyd

    Ho già detto ke controllare il referer serve a poco ed io nn faccio qsto controllo (mentre tu che lo critichi, lo usi anche se giustamente usando un codice generato lato client forse a qualcosa t serve anche se per un utente un po’ piu’ esperto e facile da superare come controllo)..
    il tuo captcha è semplice testo generato da un javascript quindi lato client. Ci sono quindi 100 modi di realizzare un bot che aggiri qsta protezione.. banalmente modificando il js (ad es "svuotando" la funzione fnCaptchaCheck e inviando il commento con referer modificato (dato ke lo controlli..) oppure senza fare modifiche basta eseguire il javascript e ricopiare il valore del campo hidden, nella textbox del numero di controllo, etc…

    per tua fortuna i bot di solito non "vedono" il javascript.. la mia constatazione era cmq riferita al fatto che, volendo accanirsi contro il tuo sito si puo fare senza troppe difficolta’.. 😀
    ciao

    Rispondi
  9. Merlinox

    @fremyd: non vorrei avessi interpretato il mio precedente commento come "scocciato" o "infastidito". Mi piacerebbe veramente capire come si fa a leggere il campo generato da JS e poi inserire il valore all’interno del campo input hidden, agendo con un bot. 🙂

    Rispondi
  10. fremyd

    @Merlinox: no tranq nessuna offesa..

    Superare un controllo javascript, come ho gia detto, e semplice: basta modificare il codice js e inviare la richiesta con referer modificato;
    questo caso pero’ è addirittura banale!! è sufficiente disabilitare il javascript (come ho fatto nel mio test precedente ed in questo..) dopo aver fatto eseguire la prima funzione che genera il numero captcha.. in questo modo il controllo non verrà eseguito ma la richiesta viene inviata ugualmente..
    Quindi non e neppure necessario riconoscere il captcha generato.. e sufficiente non far eseguire la funzione js alla pressione del tasto "voglio commentare" … se fosse necessario cmq si potrebbe implementare una funzioncina banale in grado di leggere la variabile inserita nel campo hidden..

    Rispondi
  11. fremyd

    mi scuso.. forse sono stato un po’ impreciso..
    ad ogni modo, vorrei solo farti presente che un bot non riempie i campi di un form, e difficilmente esegue codice js.. semplicemente fa richieste http direttamente alla action del form..
    Inoltre riconoscere il tuo captcha significherebbe solo far eseguire il codice js (come un normale browser) e poi nella post inviata su http inserire come valore alla variabile "captcha" il value di "captchaHidden"

    Scusami per i continuati messaggi.. (elimina il test magari..)

    PS: ho scoperto anke un’ altra falla dovuta al fatto che, all’ interno del file _postCommentiReg.cfm, cripti (con una password a dir poco banale..) il form.description senza prima effettuare alcun controllo… (ad esempio basta un campo vuoto….)
    ciao e buon lavoro..
    (se vuoi fare un po’ di pulizia tra i commenti fa pure.. )

    Rispondi
  12. Merlinox

    Molto molto interessante fermyd. Grazie.
    Mi devi spiegare come hai fatto a capire che cripto il campo descrizione. Cmq in ogni caso lo faccio per bypassare il tag <cfapplication> che vieta l’inserimento di alcuni valori (tag) via form.

    Per quanto riguarda disabilitare javascript hai ragione, in quanto per la fretta nel blog non ho inserito il controllo lato server se l’input hidden = input captcha inserito

    Grazie

    Rispondi
  13. Merlinox

    Capisco che faccio gli aggiornamenti sui siti degli altri invece che sul mio e lascio sempre le versioni vecchie.
    E capisco che mi è saltato il controllo <cferror>

    Rispondi

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *