lunedì 29 dicembre 2008

Protezione anti-spam con reCaptcha

Di librerie PHP per implementare una protezione anti-spam con l'uso di codici CAPTCHA ho già avuto modo di scrivere qualche tempo fa:

PHP: Proteggere un form da spam con codice captcha

Oggi voglio spendere qualche parola su reCaptcha un servizio che permette di realizzare una protezione basata su CAPTCHA in modo più semplice rispetto a quello visto nel post appena citato.

Il principale vantaggio di reCaptcha sta nel fatto che le immagini con i codici da decifrare sono generate da un server remoto, quindi il servizio può essere usato anche quando non si hanno a disposizione librerie grafiche installate sul proprio server.

Un altro aspetto interessante è che i codici captcha non sono generati casualmente, ma sono parole provenienti da libri di cui è in corso un processo di digitalizzazione: in particolare sono usate come captcha quelle parole che gli algoritmi di riconoscimento dei caratteri non sono riusciti a interpretare correttamente.

In questo modo mentre ci proteggiamo dallo spam aiutiamo (o meglio i visitatori del nostro sito che risolvono i CAPTCHA aiutano) la digitalizzazione di libri e documenti di interesse storico. Per chi fosse interessato tutti i dettagli di come questo avvenga sono sul sito (solo in inglese).

Vediamo come integrare la protezione reCaptcha su un form di un nostro sito.

Come prima cosa creiamo un account: scelto nome utente e password ci viene chiesto su quale dominio vogliamo utilizzare il servizio. In caso si voglia usarlo su molti domini conviene selezionare l'opzione per ricevere una chiave globale.

Completata la prima fase della registrazione, ci vengono comunicate una chiave pubblica e una chiave privata. Prendiamone nota.

Scarichiamo poi il pacchetto con la libreria. L'unico file che serve trasferire sul nostro server è recaptchalib.php e va messo nella stessa cartella dello script che si occupa della visualizzazione del form e dell'elaborazione dei risultati.

A questo punto si tratta di scriver il codice PHP necessario. Invece di postare un lungo blocco di codice ho creato una pagina dimostrativa ed un pacchetto scaricabile contenente sia recaptchalib.php che lo script di esempio usato nel post citato all'inizio modificato per funzionare con reCaptcha.

Nell'esempio lo stesso script (index.php) è usato per visualizzare il form e processare i risultati. Il file è commentato per cui non mi dilungo in dettagli.

Non dimenticate di modificare index.php in modo che le variabili $publickey e $privatekey contengano le chiavi pubblica e privata assegnate al vostro account e relative al vostro dominio.

Dai commenti dovrebbe risultare chiaro come usare le funzioni della libreria recaptcha_get_html() e recaptcha_check_answer() che servono rispettivamente a generare il codice HTML per il riquadro contenente il codice CAPTCHA e il campo per la risposta e a verificare la correttezza del codice inserito dall'utente.

Lo script serve solo a dimostrare il funzionamento della libreria: alla pressione del pulsante Invia se il codice è corretto vengono stampati a video i valori dei campi, altrimenti viene visualizzato un messaggio di errore.

Tutto qui. Quindi per l'uso su un sito reale dovrà ovviamente essere adattato alle vostre esigenze.

Nessun commento:

Posta un commento

Nota. Solo i membri di questo blog possono postare un commento.