Qualche mese fa, stanco di aver un captcha grafico poco accessibile (anche a detta del W3C), ho introdotto nell’area commenti del mio blog, un captcha matematico, in grado di reggere le ondate di spam che imperversano sulla rete. L’idea era semplice e originale: installando un semplice plugin per WordPress (Math Comment Spam Protection Plugin) e aggiungendo del semplice codice php nella posizione voluta nel file comments.php, era possibile vincolare l’inserimento di nuovi commenti alla risposta di una semplice domanda che richiedeva elementari conoscenze matematiche: “Quanto fa 3+5?”.
Ebbene, nonostante la semplicità dell’operazione, prendendo spunto dal geniale Daniele, ho introdotto una ulteriore facilitazione: se il vostro browser ha abilitato il supporto per Javascript (e se anche prima era quasi sempre consigliata la disattivazione, oggi con tutte le applicazioni Ajax che girano, è quasi d’obbligo averlo attivo) potrete vedere che il campo in cui dovevate scrivere il risultato della somma algebrica, risulta ora già precompilato con la risposta esatta.
Ho deciso di adottare anche io questo metodo, perché, ho ipotizzato che un classico bot di spam non usa un browser per inviare commenti, e quindi non dovrebbe mai avere accesso a questa funzione javascript. Certo il codice potrebbe essere semplicemente bypassabile dato che i numeri vengono compresi in un 2 tag SPAN; inoltre dato che i bot usano soluzioni di massa, una soluzione “amatoriale e di nicchia” potrebbe risultare molto efficace.
Al momento sono ancora in fase di test per valutare se questa soluzione è apprezzata e se vi è un eventuale incremento dello spam: al momento in cui scrivo e dopo una settimana di prove mi pare che lo spam sia rimasto sempre lo stesso.
Come funziona
Adesso è arrivato il momento di spiegare come implementare questa semplice soluzione. Unico prerequisito è avere installato il plugin per WordPress Math Comment Spam Protection Plugin (anche se, opportunamente adattato, funzione senza problemi con altri plugin simili o soluzioni proprietarie).
Sul sito dell’autore del plugin, viene riportato il codice da inserire nel file comments.php del proprio tema.
A questo codice, occorre inserire il seguente codice js:
Quindi, occorre separare ogni numero generato casualmente attraverso i TAG SPAN e assegnandogli un ID univoco:
In questo modo ogni operatore della somma è identificato univocamente: il primo sarà il valore dello span con ID “num1” e il secondo quello con ID “num2“. Il codice Javascript sopra riportato, quindi, non fa altro che prendere questi due valori (attraverso l’uso di document.getElementById) e sommarli tra di loro. Il risultato andrà poi scritto nel valore del campo testuale document.commentform.mcspvalue.
Occorre, ora, fare una precisazione: quasi tutti i temi per WordPress, quando dichiarano il form dei commenti, usano assegnare solo l’ID e non il NAME. Per far funzionare il codice Javascript e non incorrere nel terribile errore di Warning “commentform has no properties“, occorre aggiungere dopo id=”commentform” anche questa stringa: name=”commentform” per ottenere quindi la seguente riga:
Commenti Recenti