Impedire ai bot dannosi di pubblicare spam


15

Ricordo che un sito è stato chiuso per uso improprio e mi chiedo se i robot ne facciano parte. Se il bot sta postando qualcosa sul mio sito in quali modi posso combatterlo? Stavo pensando di impostare alcuni cookie e di farli cambiare tramite JavaScript + data e ora (quindi i cookie di ieri non possono essere utilizzati oggi e la prossima settimana).

Sono sicuro che la maggior parte delle persone / robot userebbe semplicemente un altro sito invece di abilitare JavaScript nel proprio bot.

Cos'altro posso fare? Sto pensando al limite POST giornaliero e un honeypot per i robot generici che pubblicano casualmente spam.

Risposte:


13

Potresti fare diverse cose tra cui:

  1. Mettere un campo falso che vedrà solo i robot. Quindi se quel campo viene inviato con il resto del modulo è possibile ignorarlo (e vietarli se lo si desidera). Puoi anche intercettare i robot cattivi che seguono un collegamento nascosto .

  2. Utilizzare un CAPTCHA come reCAPTCHA

  3. Utilizzare un campo che richiede all'utente di rispondere a una domanda come 5 + 3. Qualsiasi essere umano può rispondere ma un bot non saprà cosa fare poiché si popola automaticamente i campi in base ai nomi dei campi. Quindi quel campo sarà errato o mancante, nel qual caso l'invio verrà rifiutato.

  4. Utilizzare un token e inserirlo in una sessione e aggiungerlo anche al modulo. Se il token non viene inviato con il modulo o non corrisponde, viene automatizzato e può essere ignorato.

  5. Cerca invii ripetuti dallo stesso indirizzo IP. Se il tuo modulo non dovrebbe ricevere troppe richieste ma all'improvviso è probabilmente colpito da un bot e dovresti considerare di bloccare temporaneamente l'indirizzo IP.

  6. Usa Askimet . È ottimo per identificare lo spam.


5
+1 - E, idealmente, implementerai una combinazione dei suggerimenti sopra elencati in modo intuitivo (ad esempio, se un utente ha Javascript disabilitato e quindi fallisce l'autenticazione basata su Javascript, presenta all'utente un CAPTCHA)
danlefree

6

John Conde delinea un sacco di buoni approcci. Il problema con la scelta di una tecnica anti-bot / anti-spam sta bilanciando efficacia e convenienza. Sarebbe davvero scomodo dover compilare un CAPTCHA ogni volta che si desidera pubblicare un commento o un messaggio, ma se si richiede solo un CAPTCHA al momento dell'iscrizione, a volte ciò non scoraggia gli spammer.

Alcune delle tecniche passive sono una buona alternativa, poiché non richiedono alcuna azione umana. Il problema è che i robot stanno diventando sempre più sofisticati e se i robot sono in grado di risolvere i CAPTCHA, possono sicuramente elaborare JS e CSS. Quindi dovrai esercitare un po 'di ingegnosità, come usare CSS meno ovvi per nascondere i campi di bot trap.

Ma in base alla tua domanda, penso che probabilmente ti rendi conto che il punto non è creare un sito a prova di bot, ma solo creare un deterrente sufficiente per consentire agli utenti di bot semplicemente di scegliere altri target più facili. Quindi ciò che è richiesto qui varierà da sito a sito e probabilmente richiederà alcuni test di prova ed errore. Proverei prima le tecniche meno invadenti.

Infine, un altro modo per rimuovere la posta indesiderata dal tuo sito è utilizzare la moderazione tra pari per rimuovere eventuali commenti inviati da bot o spam inviati manualmente che sfuggono.


puoi spiegare l'idea della moderazione tra pari? Ciò implica che gli utenti normali ottengano diritti di moderatore o come devo immaginarlo?
0xC0000022L

@STATUS_ACCESS_DENIED: scusate la risposta tardiva, ma la moderazione dei pari è fondamentalmente qualcosa come digg, slashdot, stackexchange, ecc. In cui gli utenti possono moderare il contenuto del sito dando una qualche forma di feedback positivo o negativo. Quindi puoi automatizzare il sistema in modo tale che, quando un numero sufficiente di utenti fornisce un feedback negativo su un contenuto, esso viene automaticamente nascosto o contrassegnato per la revisione. Su siti come StackExchange, gli utenti possono anche contrassegnare commenti / risposte come spam, portandoli all'attenzione degli amministratori. Ciò riduce il lavoro che devono fare gli amministratori pagati.
Lèse majesté,

Grazie. Questo, ovviamente, funzionerebbe solo su siti ad alto traffico in cui un numero sufficiente di utenti può essere disturbato a fornire feedback;)
0xC0000022L

1

Come menzionato da John Conde nel suo # 1) e da te citato, honeypot può funzionare molto bene nella maggior parte dei casi e nella maggior parte dei siti web. Se mai viene eseguito da un bot, puoi anche eseguire uno degli altri metodi menzionati da John. Ma onestamente se il tuo sito ha un traffico medio o basso questo dovrebbe fare il trucco.

Esempio, uno dei miei preferiti:

<form action="/process-form">
<input name="email" placeholder="Enter Your Email">
<input name="email_address" placeholder="Enter Your Email" style="display:none;">
<input type="submit" value="Submit"></form>

Ora quando il modulo viene inviato, una percentuale estremamente elevata di robot compilerà sia "email" che "email_address" ma gli umani compileranno solo quello che vedono, "email" e non "email_address". Quindi nel tuo codice `/ process-form 'devi solo verificare se email_address è (non) vuoto per la verifica.

Semplice ed efficace

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.