Come integrare un antispam nei nostri form php
![]()
Seguendo l’idea che sta alla base di Hiddy, mi sono fatto il mio personale antispam.
Il mio form di solito si compone di un singolo file PHP dove c’è tutto dentro: il form vero e proprio e il codice PHP che serve a spedire l’email.
L’idea alla base di Hiddy, per chi non lo sapesse, è di accantonare captcha vari per qualcosa di molto più semplice, che - detto terra-terra - lo metta in quel posto agli spam-bots!
I robot che spammano riempiendo tutti i form che trovano nel web seguono una semplice regola: riempi tutti i campi del form prima di spedirlo.
BENE! Basandoci su questo semplice presupposto basta inserire un campo testo che non deve essere riempito per poter validare il form!
A questo punto, senza dilungarmi sulle altre ovvie implementazioni di sicurezza, l’implementazione del nostro anti-spam si fa in 3 fasi:
- inserire un campo testo
- nascondere il campo testo ai bots
- verificare che il campo testo è vuoto
Inserire il campo testo è semplice (html):
<input name="antispam" type="text" id="antispam" value="" />
Nasconderlo ai bots è altrettanto semplice, applicando uno stile al campo testo; i robots sono scemi e non capiscono che quel campo è visibile solo a loro e non agli navigatori normali. (css):
style="display:none"
Verificare che il contenuto sia inalterato, al momento in cui il nostro codice PHP analizza i dati ricevuti dal form (php):
if ($antispam != '') { die("errore antispam"); }
Volendo esagerare, al posto di un campo testo vuoto si può scriverci una parola di sicurezza, che se cambiata invalida il form.
Mi pare tutto chiaro, no? ![]()
Articoli simili
- Proteggere un form dallo spam
- Inserire QUALSIASI COSA in un post WordPress
- Bloccare lo spam proveniente dai commenti di Wordpress
- Variabili dinamiche da HTML a SWF (anche per Flash4)
- Come personalizzare check box e radio button nei form html
Collegamenti sponsorizzati:
| Se l'articolo ti è piaciuto è sempre graditissimo un commento! Se vuoi ricevere le ultime novità dal mio blog puoi anche iscriverti ai Feed RSS (non si paga!). Anche via email. CIAO!! |








































Merlinox scrive:
30 Luglio 2008 alle 16:43
Adesso si che l’ho capito. Grazie.
L’unica cosa che posso dirti è che funziona! Anche su WP lo spam è pochissimo. Quel poco che arriva analizzando i log pare proprio fatto a manella.
Cmq su hiddy c’è molto di più della mia umile idea.
p.s.: grazie per il link!
DoZ scrive:
30 Luglio 2008 alle 16:45
Ahò! Ecchè mme stai a pià per c**o?
Merlinox scrive:
30 Luglio 2008 alle 16:46
No mi ha fatto piacere il tuo post e conoscere il tuo blog che non conoscevo. Anzi l’ho inserito in bloggeritaliani.com, spero non ti dispiaccia.
DoZ scrive:
30 Luglio 2008 alle 16:49
Ci mancherebbe che mi dispiacesse pure!!!
Son sempre contento quando il mio lavoro va in giro. Peace!
Spino scrive:
23 Agosto 2008 alle 23:36
decisamente una bella idea! molto più visitor friendly dei numeri di verifica.
però il mio form è in html e non so in che punto piazzare la riga style=”display:none”
il resto è tutto chiaro (e funzionante: grazie per la dritta).
ciao,
Spino.
ps: nel caso ti andasse di spiegarmi dove ficcare il display none ti scrivo sotto l’indirizzo della pagina.
http://flipflop.altervista.org/mail2spino.html
DoZ scrive:
24 Agosto 2008 alle 08:09
Ad esempio così, inserendo lo stile nel campo input nascosto:
input style="display:none" name="frase" type="text" id="frase" value=""Nel tuo caso però penso sia meglio inserire lo stile dentro il tag TR della riga della tabella che contiene il campo da nascondere:
tr align="center" valign="middle" style="display:none"Spino scrive:
24 Agosto 2008 alle 10:04
grazie davvero fratello!
non ho parole per la tua tempestività: stamattina non potevo credere ai miei occhi nel trovare già la soluzione… evidentemente credi seriamente alla condivisione del know how!
ti devo comunque un favorone!
con riconoscenza,
Spino.
DoZ scrive:
24 Agosto 2008 alle 11:42
eh!eh! Prego, prego.
Spino scrive:
25 Agosto 2008 alle 23:03
allora… per dovere di completezza, e anche per ricambiare la consulenza dell’ottimo Doz, vi aggiorno sulla mia situazione di spammato.
anche dopo aver corretto il form ho continuato a ricevere spamming in modo massivo, dallo stesso spider (identici messggi).
siccome credevo nel metodo suggerito da DoZ, sono “andato in puzza” e ho cercato di capire come fosse possibile.
il mio form si compone di tre elementi (ok sarebbe meglio uno solo in php ma io sono un novellino): il form in html, la pagina php che manda la mail (send.php) e un’altra pagina html che conferma l’avvenuto invio e offre un menu di navigazione.
seguendo i consigli ho cambiato i primi due ma lo spam continuava.
brevemente: mi è venuto il sospetto che lo spammer avesse memorizzato i dati da mandare al send.php, aggirando così il campo trappola presente nel file html.
a questo punto ho cambiato la locazione del file php (semplicemente rinominandolo in “sendMail.php” e lo spam è cessato (prima ne arrivavano almeno 5 al dì).
dunque confermo che il metodo è efficace: se lo si usa in maniera preventiva è sufficiente aggiungere il campo trappola; se si è già vittima dello spam basta cambiare nome al php che esegue l’ordine.
non sono per niente certo del nesso causale (che lo spammer memorizzi le istruzioni da mandare al php, e cioè riempire solo i soliti campi e non tutti, è solo una ipotesi deduttiva) ma posso assicurare che il rimedio è efficace.
grazie ancora DoZ.
Merlinox scrive:
26 Agosto 2008 alle 08:57
@DoZ: se la vuoi fare ancora più “figa” puoi mettere il nome del campo random e memorizzarlo in un cookie. E nell’altra pagina verifichi la presenza del cookie etc…. gestendo scadenze e quant’altro.