Se stai creando un framework web, questo implica che puoi servire risorse come HTML, CSS e JS. Se deve esserlo, potresti persino integrare tutte le risorse in HTML. È quindi possibile utilizzare le tecniche basate su CSS e JavaScript per rendere arbitrariamente difficile lo spam del modulo.
Per ogni campo modulo, puoi applicare una percentuale diversa diclass
. Solo uno di questi sarà usato per designare l'honeypot, e puoi usare i CSS per nascondere quell'input. Ciò richiede che i robot spam includano un parser CSS completo e scoprano se un determinato input sarà visibile. Questo è abbastanza non banale. L'uso di attributi di stile in linea non offre una protezione simile, dal momento che è possibile utilizzare un'espressione regolare come /\bdisplay:\s*none\b/
per rilevarli. L'uso di CSS come questo è il 20% di sforzo, l'80% di una soluzione di successo che vale davvero la pena fare.
Puoi facilmente migliorare questa protezione, ad es. applicando le classi necessarie tramite JavaScript. Ciò richiede che i robot eseguano un interprete JavaScript, ma questo risulta molto più semplice della risoluzione delle regole CSS. Puoi offuscare le tue regole CSS per richiedere ai robot di implementare pienamente i CSS. Pensa a regole come .the-next-one-is-spam + .field { display: none }
. Puoi generare automaticamente identificatori di classe su ogni caricamento della pagina, in modo che le regole speciali per il tuo sito siano inutili per un bot. Oppure potresti rinunciare a provare a mettere insieme la tua soluzione e semplicemente utilizzare un captcha provider esistente.
Il problema con gli honeypot è che da un lato, devono essere indistinguibili dai campi di input reali. D'altra parte, ci possono essere utenti con browser basati su testo o utenti che fanno affidamento su tecnologie assistive. Altri utenti potrebbero sostituire i propri fogli di stile. Non puoi fare affidamento su tutti i tuoi utenti affinché JS e CSS siano abilitati, e sarebbe bello se il tuo sito fosse comunque utilizzabile. A seconda della giurisdizione e del tipo di progetto, potresti essere legalmente obbligato a supportare gli utenti delle tecnologie assistive.
Inoltre, gli honeypot non offrono protezione contro gli spammer umani che utilizzano browser reali. Gli honeypot possono essere uno strato di difesa, ma da soli non possono offrire una protezione totale. Sono utili solo per estirpare le orde di bot a basso sforzo in cerca di moduli di commento non protetti scritti con la comprensione della sicurezza di uno script di 90 anni.