Come impedire ai commenti spam di WordPress di mandare in crash il tuo blog WordPress e di disattivare il tuo server
Pubblicato: 2021-08-19Prima di tutto, volevo solo chiarire che questo articolo NON riguarda come rilevare e contrassegnare i commenti come spam. Il plugin per WordPress Akismet fa già un buon lavoro di screening e filtraggio dei tradizionali commenti spam di WordPress.
Invece, questo post tratta di come prevenire lo spam dei commenti e altre attività non autorizzate dal crash del tuo server e dalla rimozione del tuo blog .

Foto di BoxChain
Come ho detto nel mio ultimo articolo, il traffico verso il mio blog è raddoppiato nell'ultimo anno.
E sfortunatamente durante quel periodo, anche la quantità di commenti spam è aumentata di un ordine di grandezza.
Giusto per darti un'idea, ci sono stati diversi giorni a dicembre in cui sono stato bombardato da oltre 20 commenti spam ogni pochi secondi.
Sì, hai sentito bene. Ogni volta che aggiornavo la mia dashboard, vedevo 20 o più commenti spam nel mio filtro Akismet. In effetti, la quantità di spam ha reso tutti i siti Web sul mio server estremamente lenti o inaccessibili per un lungo periodo di tempo durante quei giorni.
Il problema con WordPress
Ora, in condizioni normali, il mio blog funziona abbastanza bene in condizioni di traffico intenso grazie a un plug-in chiamato WP Super Cache.
In sostanza, questo plugin crea una versione statica di ogni articolo nel mio blog in modo che possa essere servito molto rapidamente all'utente finale.
Tuttavia, questo plugin è impotente contro un forte afflusso di commenti perché i commenti richiedono che il tuo server richiami WordPress ogni volta per elaborare i commenti uno per uno.
E poiché WordPress è un tale divoratore di risorse, un forte afflusso di commenti spam può facilmente eliminare qualsiasi blog anche se sei su un server dedicato e utilizzi un plug-in di memorizzazione nella cache.
Non importa se utilizzi i migliori filtri antispam per commenti al mondo, tutti i commenti spam devono comunque essere elaborati da WordPress, che richiede una buona parte delle risorse del server.
Le caratteristiche degli spam bot
Ora avere un blog lento o inaccessibile è una cosa, ma lo spam nei commenti colpisce anche altri siti che sono in esecuzione sullo stesso server, il che è inaccettabile. Dopo aver fatto alcune ricerche sui bot di spam, ho scoperto alcune cose.
- I bot spam in genere non accettano i cookie
- I bot spam possono lasciare commenti spam in pochi secondi
- I bot spam in genere non eseguono javascript
Che cosa significa questo? In termini non tecnici, un bot spam non si comporta come un normale utente su un browser web. E la chiave per risolvere il mio problema consisteva nel rilevare immediatamente lo spam bot e indirizzarlo a una pagina di errore invece di avviare WordPress.
Sulla base delle caratteristiche sopra descritte, potrei rilevare i bot di spam sia inserendo un cookie sul computer dell'utente, disabilitando i commenti per molti secondi dopo il caricamento di una pagina o inventando del codice javascript per rilevare il bot di spam.
Risolvere il mio problema di spam nei commenti
Dopo molte discussioni, ho trovato una soluzione per inserire segretamente un cookie sul computer dell'utente ogni volta che viene effettuato un accesso a una pagina del mio blog. Potrei quindi cercare questo cookie sulla macchina dell'utente prima di consentire il passaggio di un commento.
Poiché un bot di spam in genere non accetta i cookie, potrei facilmente rilevare il bot e indirizzarlo a una pagina di errore statica.
Inizialmente, avevo intenzione di pubblicare il mio codice sorgente su questo post del blog che ho scritto in javascript (sarei felice di inviartelo se siete curiosi), ma dopo aver parlato con alcuni colleghi blogger, ho scoperto che lo stesso autore di WP Super Cache, Donncha, aveva già scritto un plugin chiamato Cookies For Comments che essenzialmente fa la stessa cosa che ho appena scritto.
Poiché il suo plugin è scritto in modo molto più elegante del mio plugin javascript, ti consiglio vivamente di scaricarlo.
Ma se prevedi di utilizzare il plug-in Cookies For Comments di Donncha, assicurati di apportare le seguenti modifiche al tuo .htaccess che differiscono dalle istruzioni di installazione del plug-in.
RiscriviCond %{HTTP_COOKIE} !^.*2071a9e39879b6a958b06162384d3c06.*$
RewriteRule ^wp-comments-post.php – [F,L]
Cosa fanno queste 2 righe? In sostanza, queste righe di codice rilevano la presenza del cookie segreto che è stato inserito nel computer dell'utente. Se il cookie non è presente, l'utente o il bot spam viene indirizzato alla pagina 404 di WordPress o "pagina non trovata".

Ora il problema con questa configurazione predefinita è che WordPress viene ancora chiamato per elaborare la pagina 404 che richiede ancora molte risorse del server.
RiscriviCond %{HTTP_COOKIE} !^.*2071a9e39879b6a958b06162384d3c06.*$
RewriteRule ^wp-comments-post.php error.html [L]
La differenza qui è che lo spam bot viene indirizzato a una pagina di errore completamente statica che impedisce il caricamento completo di WordPress.
Problema risolto??? Non proprio
Quindi le modifiche che ho descritto sopra hanno risolto il mio problema di spam nei commenti, ma dopo aver funzionato senza problemi per alcuni giorni, il mio server ha iniziato a bloccarsi di nuovo! Guardando i miei log del server, ho scoperto quanto segue.
mywifequitherjob.com GET /oxvumirserver33.rar
mywifequitherjob.com GET /oxvumirserver33.rar
mywifequitherjob.com GET /oxvumirserver33.rar
Fondamentalmente, alcune macchine canaglia continuavano a provare ad accedere allo stesso file inesistente sul mio server più e più volte che stava bloccando il sito. Ora, con i normali siti Web, questi accessi non autorizzati non avrebbero alcun effetto sul server.
Tuttavia, WordPress elabora tutti gli accessi a file inesistenti e invia gli utenti alla pagina Web personalizzata 404 o "pagina non trovata" di WordPress.
Ho già detto che WordPress è un divoratore di risorse? Tutto ciò che serve è un mucchio di questi accessi fasulli e il tuo server continuerà a non funzionare, indipendentemente dal plug-in di memorizzazione nella cache che utilizzi.
Il segreto per risolvere questo problema è simile al mio problema di spam nei commenti. Idealmente, vogliamo eliminare completamente WordPress dall'equazione e inviare l'utente canaglia a una pagina di errore completamente statica per risparmiare risorse del server.
RiscriviCond %{REQUEST_FILENAME} !-f
RiscriviCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !(robots\.txt|sitemap\.xml(\.gz)?)
RiscriviCond %{REQUEST_FILENAME} \.(css|js|html|htm|rtf|rtx|svg|svgz|txt|xsd|xsl|xml|asf|
asx|wax|wmv|wmx|avi|bmp|class|divx|doc|docx|exe|gif|gz|gzip|ico|jpg|jpeg
|jpe|mdb|mid|midi|mov|qt|mp3|m4a|mp4|m4v|mpeg|mpg|mpe|mpp|odb|odc|odf|odg|
odp|ods|odt|ogg|pdf|png|pot|pps|pt|pptx|ra|ram|rar|swf|tar|tif|tiff|wav|wma
|wri|xla|xls|xlsx|xlt|xlw|zip)$ [NC]
RewriteRule .* – [L]
Errore Documento 404 https://mywifequitherjob.com/404.html
Cosa fa tutto questo codice? Fondamentalmente, quando viene richiesto un file dal mio server che corrisponde a uno dei tipi sopra, voglio che il mio server ignori del tutto WordPress. Se il file non esiste, l'utente verrà indirizzato a una pagina di errore statica denominata 404.html.
Ancora una volta, bypassare WordPress è la chiave per risolvere i miei problemi di crash. Poiché il processo non autorizzato nei registri del mio server sta accedendo a un file .rar, ora reindirizzo questo utente malintenzionato alla mia pagina di errore che non richiede praticamente alcuna risorsa.
Questo risolve tutti i miei problemi?
Quindi sto eseguendo le 2 modifiche di cui sopra da alcune settimane e il mio server ha funzionato come un campione senza rallentamenti. Sfortunatamente, il modo in cui WordPress è scritto rende impossibile impedire a tutti gli accessi non autorizzati di mandare in crash il tuo server.
Ad esempio, ogni volta che qualcuno tenta di accedere a un articolo che non si trova sul mio blog, WordPress viene comunque caricato. Quindi, in teoria, se qualcuno volesse eliminare MyWifeQuitHerJob.com o qualsiasi altro blog WordPress, tutto ciò che dovrebbe fare sarebbe accedere a pagine inesistenti sul sito più e più volte.
Ma nel frattempo, tutto sembra essere stabile dalla mia parte. Si spera che in futuro, WordPress possa essere aggiornato per risolvere questi problemi del server.