Dopo aver analizzato teoricamente l’argomento, è il momento di analizzare come arginare il problema a livello software.
Il termine arginare non l’ho utilizzato a caso. Come ogni soluzione software, anche quella del Captcha sarà prima o poi superata. Inoltre, la soluzione Captcha è efficace con i bot, ma non lo è altrettanto con gli essere umani; ed haimé di utenti che girano in rete spemmando sui blog altrui ce ne sono tanti.
Per cui, va bene implementare Captcha, ma vanno anche utilizzati i normali sistemi di moderazione che ogni software di blogging, forum e sito dovrebbe implementare normalmente.
Captcha argina il fenomeno dello spam causato dai bot. Ma non risolve definitivamente il problema perché lo spam è causato anche da utenti che girano per la rete.
Premesso questo, passiamo alla soluzione software.
La soluzione sarà esposta teoricamente con stranlci di codice, questo permetterà a chiunque di implementarla utilizzando il linguaggio di programmazione preferito.
La prima cosa da fare è generare una sequenza casuale alfanumerica o solo alfabetica o numerica. Molti poi salvano questa sequenza in un cookie o in una sessione server o in database, per poi recuperarla all’occorrenza.
Io non sono d’accordo su queste scelte per vari motivi:
- Il cookie potrebbe essere letto oppure l’utente potrebbe avere i cookie disabilitati: e questo creerebbe un disservizio inutile;
- Una sessione server potrebbe essere manipolata o intercettata;
- Per utilizzare un database occorre implementare codice per l’interazione con lo stesso, occorre inoltre avere a disposizione lo stesso e non sempre è una soluzione economicamente appetibile.
Come vedremo, il tutto si può fare senza utilizzare nessuna di queste “sotterfugi”.
Una volta generata la sequenza di caratteri, crittografiamo la stessa con sistema reversibile. Possiamo utilizzare una qualsiasi soluzione a chiave pubblica e privata, facilemente implementabile con i più comuni linguaggi di programmazione.
Crittografati i caratteri, li possiamo esporre.
All’interno del TAG FORM aggiungeremo un campo nascosco contenente la sequenza di caratteri crittografata.
<input type="hidden" name="__theKeyCatpcha" value="[CHIAVE-CRITTOGRAFATA]" />
Passeremo la stessa chiave crittografata ad una funzione che dinamicamente crea un immagine contenente i caratteri che saranno visualizzati in maniera offuscata così da essere riconoscibile solo ad un essere umano.
Ovviamente la funzione dovrà essere in grado di decrittare la chiave inviata.
Ovviamente metteremo a disposizione all’interno del FORM un campo in cui l’utente dovrà ricopiare i caratteri che vede nell’immagine.
<input type="hidden" name="__theCatpchaTest" value="" />
Nello script che processerà i dati del form non dovremmo fare altro che aggiungere un controllo che analizzerà se i caratteri inseriti dall’utilizzatore del form sono uguali a quelli generati da noi. In caso affermativo possiamo essere per lo meno certi (al 99%) che siamo di fronte ad un essere umano; viceversa o siamo di fronte ad un bot o l’utente non ha letto bene, per questo motivo non processeremo i dati del form.
Ovviamente per eseguire la comparazione tra le due sequenze di caratteri dobbiamo decrittografare la chiave che precedentemente abbiamo crittografato.
Non sai come creare un sistema di crittazione reversibile? Ne parleremo presto!














