CSS anti-spam
Mercoledì 8 Agosto 2007 - 09:00
di Cesare Lamanna

Non so davvero valutare quanto la soluzione che sto per segnalarvi possa realmente costituire una valida difesa contro lo spam dei commenti e dei form in genere.
Il riferimento ai CSS si spiega perché tutto si basa sull’utilizzo di visibility:hidden;. Nel modulo, infatti, viene inserito insieme ai campi necessari un campo nascosto, invisibile agli umani, ma che un sistema di spamming automatico riterrà parte del form e che tenterà dunque di compilare. Al momento dell’invio, uno script PHP sul server, valuta se all’interno di questo campo nascosto sono presenti informazioni. In caso affermativo, i dati saranno ritenuti spam, dal momento che non possono essere stati inseriti da un umano.
Il post è completo di codice HTML, CSS e PHP.
Commenti
1
Ma danno per scontato che lo spammatore compili automaticamente tutti i campi (quello nascosto compreso)…. ma è così veramente?
2
Dal post si capisce che il presupposto sia che lo spammatore sia un programma automatico e non una persona fisica.
L’idea mi sembra interessante, almeno per la sua semplicità. In effetti, pensateci bene, se doveste realizzare voi uno spammatore, ci pensereste a fargli evitare i campi per i quali è impostato visibility:hidden ? Inoltre bisogna considerare che tale attributo potrebbe essere impostato anche ad un contenitore e non direttamente al campo, cosa che complicherebbe non poco la creazione dello script automatico.
# - postato da Luca - 08 Agosto 2007 - 09:47
3
Avevo già ideato una soluzione del genere (per un cliente) qualche tempo fà ma trovavo comunque messaggi di spam nel guestbook.
Ho sempre pensato che fossero stati inseriti manualmente ma non appena messo il CAPTCHA i messaggi sono cessati. Ne ho dedotto che non tutti gli spam robot si interessano di riempire i campi nascosti.# - postato da Simone Rodriguez - 08 Agosto 2007 - 09:56
4
Sicuri che funziona, si? Su Safari mi pare che la funzione “visibility:hidden” elimini direttamente il codice html dalla pagina e quindi non sia nemmeno compilabile… Perciò non so se anche per i robot-spammer possa essere una sicurezza…
E’ apprezzabile come idea comunque…
# - postato da Pizzolongo - 08 Agosto 2007 - 10:01
5
Adottato da qualche mese.
Già controllavo che sui campi non ci fossero tracce di “mail injection”, con questo controllo addizionale non ricevo più spam.
Funziona!Secondo me funziona meglio se il campo “trappola” ha un nome più invitante, tipo “email”.
6
Adottato anche io da un po’ di tempo, però inserendo il campo in uno span (o div) con visibility:none.
Ovviamente, per quei pochi utenti che possono non avere il supporto per i CSS lascio una scritta che indica di non compilare il campo.Concorso sul fatto di nominare il campo con qualcosa di appetitoso (io ad esempio ho usato ‘approve’).
7
personalemente preferisco la soluzione con i captcha.
8
softcondex, quali sono i pro adottando i captcha al posto di questo metodo?
I contro sono vari, ad esempio l’accessibilità, la difficoltà d’uso, il dover chiedere all’utente di riempire quel campo…
9
Se uno a css disabilitati (per diversi motivi) vedrà il campo e magari se è stato chiamato in qualche modo “appetitoso”, tipo “mail”, sarà confuso e comunque probabilmente lo compilerà, facendo risultare il suo input spam
# - postato da FranZ - 08 Agosto 2007 - 14:56
10
Pizzolongo ha scritto:
Su Safari mi pare che la funzione “visibility:hidden” elimini direttamente il codice html […]Io non credo che uno spam robot utilizzi safari…
Mah, forse mi sbaglio.
11
debug ha scritto:
softcondex, quali sono i pro adottando i captcha al posto di questo metodo?Concordo pienamente con debug.
Anzi girerei la domanda:Softcondex, quali sono i contro adottando questo metodo al posto dei captcha?
Credo sia sempre meglio chiedere più lavoro e ingegno agli spam robot che ad un potenziale utente, nonché cliente.
12
FranZ ha scritto:
Se uno a css disabilitati (per diversi motivi) vedrà il campo e magari se […]Hai letto il commento di debug ?
13
@DAG
Io non credo che uno spam robot utilizzi safari… Mah, forse mi sbaglio.
Non ne sono sicuro nemmeno io, ma ci si basa sempre su una sintassi supportata in modo non uniforme in giro per il mondo… non che sia più favorevole ai captcha, anzi… ma ci sono soluzioni simili ai captcha che ho notato in giro che evitano spam:
stringhe di testo in cui in maniera casuale-programmata si chiedono di inserire particolari lettere di una parola… in questo caso ( ovviamente non infallibile ) ci sono difficoltà da parte dei robots legati anche alla conoscenza e all’interpretazione del testo…
La reputo un buon compromesso tra la validità del metodo descritto in questo articolo e le difficoltà di accessibilità del captcha.
# - postato da Pizzolongo - 08 Agosto 2007 - 22:41
14
Mi permetto di segnalare un tutorial [1] che avevo scritto diversi mesi fà sull’argomento CAPTCHA nel quale proponevo tre soluzioni per affrontare il problema: 2 non invasive la terza leggermente invasiva (ovevro che richiede interazione uomo-sito) ma che mantengono un alto grado di accessibilità non discriminando gli ipovedenti o persone con disabilità visive in genere.
Comunque la soluzione proposta è interessante.
[1] http://diegolamonica.info/tuto.....ials/?id=7
# - postato da Diego La Monica - 09 Agosto 2007 - 08:31
15
concettualmente preferisco una soluzione (captcha o domande casuali stile “quanto fa 2 sommanto a 4″) dove chi compila il form o simili abbia la possibilità di dimostrare che é umano.
un hidden field non offre la possibilità reale di dimostrare niente. presumibilmente sono umano dato che un determinato campo é rimasto non compilato, ma non tutti gli spam robot compilano tutti i campi, inoltre se una metodo del genere dovesse prendere piede, basterebbe impostare il robot a non compilare campi che hanno caratteristiche come hidden o simili.dopotutto non é ne una perdita di tempo ne un compito insormontabile riempire un campo come un captcha o una domanda di sicurezza random.
16
La domanda random è meglio…..I robot, per definizione, non sono così creativi…..soprattutto se la domanda è casuale nel senso matematico del termine (per quanto possibile, ovviamente).
# - postato da Ratamusa - 09 Agosto 2007 - 09:50
17
Sto sperimentando la tecnica da diverso tempo su un sito abilitato ai commenti. Non è sempre vero che gli spam robot compilano tutti i campi. Ho notato che sono in grado di selezionare i più probabili.
Quindi penso che per raggiungere un discreto livello di protezione (80-90%) bisogna agire un po’ d’astuzia confondendo il più possibile il robot (come suggerito da alcuni commenti). Ma attenzione a non confondere anche gli umani e gli strumenti di navigazione assistita!
Comunque i captcha sono la soluzione estrema e più sbagliata.
18
Anche a me non piace la soluzione basata su captcha, e lo dico dal punto di vista dell’utente perchè detesto quando devo utilizzarla.
19
Ripeto, aggiungere campi da far compilare (obbligatoriamente) agli utenti che vogliono lasciare commenti o inviare un messaggio può risultare scocciante a molti, e parlo per esperienza.
Per quanto riguarda il discorso dei bot che riconoscono i campi hidden, ripeto che si può benissimo assegnare questa proprietà ad un contenitore, tipo uno span o un div, che a sua volta contiene il campo da non compilare. In questo modo, dandogli anche un nome appetitoso tipo ‘mail’ o simili, gli utenti non se ne devono preoccupare perchè per loro è come se non esistesse, per i bot invece è un campo assolutamente da compilare.
20
campo di sicurezza obbligatorio se non sei registrato al blog, mentre chi é registrato non deve riempire più niente.
questa é un’altra soluzione che reputo interessante e che ho visto su diversi blog.
21
Infatti, concordo pienamente con debug. Mi riferivo proprio a questo dicendo di confondere il robot. Volevo solo aggiungere che non esiste una “soluzione finale” incredibilmente sicura e immutabile nel tempo. Un giusto equilibrio di questi piccoli accorgimenti suggeriti abilmente anche dall’amico debug posso farci evitare l’utilizzo dei captcha.
22
campo di sicurezza obbligatorio se non sei registrato al blog, mentre chi é registrato non deve riempire più niente.
questa é un’altra soluzione che reputo interessante e che ho visto su diversi blog.
registrarsi per commentare (come stiamo facendo qui) o per un form di contatti, non mi pare molto logico nè, tantomeno, comodo.
23
registrarsi per commentare (…) non mi pare molto logico
Eviterebbe il rischio di omonimie. Già ho dovuto cambiare nick una volta (da “Pierluigi”)…
[OT] Si può fare una registrazione automatica? La prima volta che posti registro il tuo nick con la mail, poi non accetto nick omonimi con mail diverse [/OT]
Da utente, detesto i captcha, ma li capisco e li tollero. Tranne dove sono idioti (in un sito di download mettere il captcha è senza senso)…
# - postato da P&M - 09 Agosto 2007 - 13:21
24
il discorso vale per un blog, non di certo per un form di contatto o simili
25
Ciao,
un’idea astuta ma secondo me è un metodo che avrà vita breve: un campo hidden vuoto è facile da riconoscere e ignorare.
# - postato da Fabio Sutto - 09 Agosto 2007 - 22:29
26
“Si può fare una registrazione automatica?”
Si, lo fanno blog tipo Joystiq“in un sito di download mettere il captcha è senza senso”
No, serve per bloccare scaricamenti automatici“ma secondo me è un metodo che avrà vita breve”
Infatti, ma anche i captcha non dureranno a lungo. Gli OCR sono sempre più efficaci.“campo di sicurezza obbligatorio se non sei registrato al blog, mentre chi é registrato non deve riempire più niente”
E’ sicuramente la cosa più sicura ma tante volte ho evitato di commentare su siti per me nuovi per evitare la scocciatura.
27
@ Andrea: “Serve per bloccare scaricamenti automatici”.
La funzione è (ed era) chiara. Non capisco a chi/cosa serva un download automatico. Forse a scaricare tutto lo scaricabile? Che senso ha? Creare un sito di mirror per attirare traffico (è l’unica risposta che mi so dare)?# - postato da P&M - 10 Agosto 2007 - 12:49
28
avere tutto in modo sicuro e senza voler fare/riempire niente mi pare un po’ utopico e controsenso.
é come voler la moglie ubriaca e la botte piena….
29
@Andrea
“ma secondo me è un metodo che avrà vita breve”
Infatti, ma anche i captcha non dureranno a lungo. Gli OCR sono sempre più efficaci.Riformulo la domanda: è più facile riconoscere un captcha attraverso uno spider dotato di riconoscimento OCR oppure individuare un campo hidden?
Ovviamente è più facile la seconda, quindi un captcha ben fatto IMHO rimane più efficace e rappresenta un fastidio accettabile.
Il metodo descritto nel post è astuto ma facilmente individuabile e vulnerabile.Ah…c’è anche Askimet
# - postato da Fabio Sutto - 14 Agosto 2007 - 18:25
30
Non so… Sinceramente non mi sembra sia una novità… Intendo dire che mi sembrava di aver già sentito almeno 1 anno fa alcune discussioni in merito a questa tecnica…
Sicuramente è efficace per i siti comuni.
Non la vedo però come una soluzione totale dello spam: una tecnica del genere applicata ad un sito come digg.com durerebbe non più di qualche minuto… Giusto il tempo per adattare il bot al trick…
31
Fabio Sutto:
Ah…c’è anche Askimet
Ecco… Questa mi sembra una tecnica già più robusta… :)
32
Il campo potrebbe sempre essere nascosto via Js al caricamento della pagina…
Questo un nome invitate… dovrebbe risolvere gran parte dello spam.
Marco.
# - postato da Marco Pegoraro - 17 Agosto 2007 - 11:15
33
diciamo che una volta spiegato come funziona questo metodo semplice, ma non stupido è facile per uno spammer aggirarlo.
quindi buona l’iniziativa ma bisogna fare di meglio :)
34
Io utilizzo da tempo questo accorgimento sul mio sito insieme ad un buon captcha matematico. Per il momento non ricevo alcun tipo di spam, ma credo che il campo nascosto da solo non sia sufficiente.
35
A mio parere il captcha è orripilante, soprattutto quelli case sensitive…
mi è capitato di fare molta fatica, in alcuni casi, per riuscire ad indovinare codici illeggibili… per non parlare dei non vedenti, il sistema si complica troppo.
E quindi va debellato al più presto, penso che la tecnica del campo nascosto è validissima, affiancata ad altre.Ad esempio calcolerei il tempo impiegato per compilare un form, se troppo veloce è spam…
Pensiamo meglio alle differenze tra uomo e macchina…
Ciao
# - postato da francesco zeno - 28 Agosto 2007 - 03:36
36
Ad esempio calcolerei il tempo impiegato per compilare un form, se troppo veloce è spam
for (i=0; i [minore di] 100000; i [più più]) tra un campo e l’altro…
Fregato ;)# - postato da P&M - 29 Agosto 2007 - 12:56
37
Bella idea… :)
http://tinyurl.com/3cmq9k
http://tinyurl.com/2v752jSegnalo che abbiamo sviluppato il plugin per wordpress se a qualcuno interessa:
http://hiddy.etechs.it







