CSS anti-spam

Mercoledì 8 Agosto 2007 - 09:00

di Cesare Lamanna

CSS

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.

Tags:

Categoria: CSS | Permalink

Commenti

1

Ma danno per scontato che lo spammatore compili automaticamente tutti i campi (quello nascosto compreso)…. ma è così veramente?

# - postato da Sergio - 08 Agosto 2007 - 09:30

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”.

# - postato da Andrea - 08 Agosto 2007 - 10:19

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’).

# - postato da debug - 08 Agosto 2007 - 11:28

7

personalemente preferisco la soluzione con i captcha.

# - postato da softcodex - 08 Agosto 2007 - 12:28

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…

# - postato da debug - 08 Agosto 2007 - 13:46

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.

# - postato da DAG - 08 Agosto 2007 - 15:14

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.

# - postato da DAG - 08 Agosto 2007 - 15:21

12

FranZ ha scritto:
Se uno a css disabilitati (per diversi motivi) vedrà il campo e magari se […]

Hai letto il commento di debug ?

# - postato da DAG - 08 Agosto 2007 - 15:21

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.

# - postato da softcodex - 09 Agosto 2007 - 09:34

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.

# - postato da Fabrizio - 09 Agosto 2007 - 10:09

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.

# - postato da Arthens - 09 Agosto 2007 - 10:16

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.

# - postato da debug - 09 Agosto 2007 - 10:23

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.

# - postato da softcodex - 09 Agosto 2007 - 10:50

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.

# - postato da Fabrizio - 09 Agosto 2007 - 11:00

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.

# - postato da debug - 09 Agosto 2007 - 12:32

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

# - postato da softcodex - 09 Agosto 2007 - 15:03

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.

# - postato da Andrea - 10 Agosto 2007 - 09:53

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….

# - postato da softcodex - 12 Agosto 2007 - 09:46

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…

# - postato da Epper - 17 Agosto 2007 - 02:02

31

Fabio Sutto:

Ah…c’è anche Askimet

Ecco… Questa mi sembra una tecnica già più robusta… :)

# - postato da Epper - 17 Agosto 2007 - 02:04

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 :)

# - postato da YouON - 19 Agosto 2007 - 11:13

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.

# - postato da Psicologo - 21 Agosto 2007 - 18:57

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/2v752j

Segnalo che abbiamo sviluppato il plugin per wordpress se a qualcuno interessa:
http://hiddy.etechs.it

# - postato da Merlinox - 07 Novembre 2007 - 12:48

Inserisci il tuo commento:





(puoi usare i seguenti tag HTML per formattare il testo -
a href, b, i, br/, p, strong, em, ul, ol, li, blockquote, pre):

 

Anteprima del commento