Una cosa che dovresti sapere sugli spammer è che vanno sempre per il frutto basso. Lo stesso con gli hacker. Con questo voglio dire che sceglieranno i bersagli più facili da colpire che riguardano il maggior numero di utenti. Questo è il motivo per cui le vulnerabilità di PHP e Windows sono spesso sfruttate: colpiscono così tanti utenti che se trovi una tale debolezza/exploit il tuo "mercato" di destinazione è enorme.
È anche una grande parte del motivo per cui Linux e Mac OS rimangono relativamente incolumi dai virus, ad esempio: il mercato di destinazione è molto più piccolo di Windows rispetto a. Ora non sto equiparando la sicurezza e la solidità di Windows con Mac/Linux, ma anche se il modello di sicurezza di questi ultimi due è molto meglio il numero di attacchi contro il primo è ancora sproporzionato rispetto alle carenze che ha.
Dico questo perché uno dei modi migliori per evitare questo tipo di problemi è di non usare softare popolare. phpBB ad esempio ha subito molti attacchi contro di esso solo perché è così popolare.
Così facendo il tuo sistema di chat/forum sei in svantaggio perché hai un sistema che non ha il test sul campo qualcosa di popolare ma hai anche un vantaggio in quanto non vale più il tempo dello spammer per sfruttarlo. Quindi quello che devi fare attenzione è ciò che possono fare i sistemi automatici contro di te. I moduli di contatto sui siti Web tendono ad avere indicatori riconoscibili (come nome, e-mail e campi di commento).
quindi consiglierei:
- Ignorando risposte che rientrano dicono 5-10 secondi di invio del modulo per l'utente;
- Utilizzando un honeypot (CSS/JS campi nascosti, come descritto altrove);
- Utilizzo di Javascript ove applicabile per il rendering, il riordino o la visualizzazione del modulo;
- Utilizzo di nomi di campi modulo non prevedibili; e
- Limitazione delle risposte errate tramite IP.
Per chiarire, i campi di input "nascosti" devono essere nascosti da CSS (foglio di stile, non stile inline) o, meglio ancora, javascript (anche se solo javascript è già una parte necessaria del sito). Fare 'input type = hidden' non ha intenzione di seguire bot. – ChssPly76
Solo per riferimento, questa tecnica è chiamata honeypot. – cletus
Non credo che ingannare i robot. Puoi facilmente usare JS per verificare se un campo è nascosto o meno (anche se è stato nascosto dai CSS). Inoltre, supponi che tutti i campi vengano riempiti da bot, quindi questo non ti protegge dai bot che ne riempiono solo alcuni. – RaYell