A chi in questi tempi bui non è capitato di dover inserire in una form un codice di verifica, ossia di dover copiare da un’immagine semioffuscata una sequenza di numeri e lettere casuali?
Vi siete chiesti a cosa servono? Semplice: per impedire che quelle form vengano utilizzate da un client software. Ad esempio gli spammer avevano iniziato ad aprirsi account a go-go su Yahoo mail, o altri siti di email gratuite, per poter sparare indisturbati i loro quintali di avvisi commerciali. Aprire un account era piuttosto semplice, bastava riempire qualche form, lavoro che si può automatizzare agevolmente con uno script in Perl, o simili.
Grazie all’introduzione di un codice di verifica questo non è più possibile, infatti il codice nell’immagine non è leggibile in maniera automatica.
Certo sarebbe in teoria possibile utilizzare un software OCR, ma come vedremo anche l’uso di questi strumenti si può, se non impedire, almeno rendere più complesso.
In questo post realizzeremo una form con un semplice codice di controllo generato casualmente.
Prerequisito perché questa strategia di verifica sia efficace, è che il codice di controllo non compaia mai all’interno della pagina HTML dove si trova la form. Questo deve essere mostrato solo attraverso un’immagine e quindi immagazzinato nella sessione.
Per questo realizzeremo uno script PHP, chiamato verimage.php, che provvederà a creare un nuovo codice di verifica casuale, memorizzarlo nella sessione e quindi creare un’immagine che lo rappresenta. L’immagine non verrà memorizzata da qualche parte, al contrario verrà immediatamente inviata al browser dell’utente, dichiarando nell’header HTTP il tipo mime di un’immagine, invece che il consueto text/html.
Questa tecnica si può anche utilizzare in altri contesti, per creare dinamicamente immagini o altri tipi di file.
Ciao,
ho apprezzato molto il tuo tutorial, e vorrei inserirlo all’interno di un GuestBook, per evitare di scrivere messaggi di spam…
Ho studiato molto bene le tue pagine, e credo anche di aver capito come funziona il sistema, tranne un po’ per la pagina verimage.php, che mi prometto di apprendere col tempo…
Ma veniamo al problema….
Tu effettui il controllo della validità del codice, nella pagina processform.php; io avrei bisogno di effettuare questo controllo in javascript, e senza richiamare un’altra pagina, ma svolgendo tutto nella pagina di scrittura dei messaggi (si tratta di un guestbook….)
E’ possibile controllare l’effettiva corrispondenza tramite javascript?
Grazie…
ti lascio la mia mail: eliomarotta@alice.it
Elio,
Non credo sia possibile farlo in maniera diretta perché dovresti mettere il codice di sicurezza nel sorgente Javascript che quindi diventerebbe “visibile”.
Semmai potresti utilizzare qualcosa tipo Ajax per controllare dinamicamente il codice senza però esporlo. Non è una cosa semplicissima da fare, ma si può fare.
Ciao. Veramente un tutorial utile, e funziona bene per le mie necessità. Appena ho finito di implementarlo sul sito che gestisco, ti posto il link così puoi guardarci. Grande!
Ciao devo ammettere che lo script è eccezionale… e spero di utilizzarlo all’interno del mio libro degli ospiti che ogni giorno mi tocca cancellare i messaggi spam… purtroppo ho riscontrato un piccolo problema, praticamente non si carica l’immagine col codice OCR… mi aiuti? Grazie ;o)
Ciao,
lo script è proprio quello che stavo cercando!
Purtroppo anch’io come etikettaindipendente non riesco a caricare l’immagine col codice OCR.
Potresti dare delucidazioni in merito.
Grazie
abbiamo fatto qualche indagine ed è venuto fuori che, almeno nel caso di etikettaindipendente, il problema sembra essere la mancanza delle librerie grafiche GD nell’installazione del php.
Quindi provate a usare phpinfo() per verificare che il supporto alle librerie grafiche GD sia abilitato e funzionante!
Si si Meg, hai proprio ragione, è proprio la mancanza delle librerie grafiche GD nell’installazione del php… ma ti comunico che presto risolverò il problema perché ho cambiato azienda e qui ci sono 2 programmatori…. presto vi farò sapere, buon lavoro a tutti