WordPress non è insicuro. I siti che lo usano vengono compromessi per quattro motivi, in questo ordine di frequenza, e nessuno di essi è un difetto di WordPress stesso.

1. Un plugin che non è stato aggiornato

Di gran lunga la causa maggiore. Viene pubblicata una vulnerabilità, in pochi giorni uno scanner trova ogni sito ancora fermo alla vecchia versione, e il resto è automatico.

  • Accenda gli aggiornamenti automatici per i plugin di cui si fida.
  • CANCELLI ciò che non usa. Un plugin disattivato resta un file raggiungibile direttamente.
  • Controlli se un plugin è stato abbandonato: «ultimo aggiornamento 3 anni fa» è la decisione di smettere di usarlo.

2. Una password usata anche altrove

Trapelata da un sito che non c'entra nulla e poi provata qui. Il secondo fattore rende la fuga irrilevante, ed è per questo che vale più di qualsiasi plugin.

3. Caricamenti che vengono eseguiti

Se un file messo in wp-content/uploads può girare come PHP, un modulo di caricamento è una via d'ingresso. La chiuda sul server, non con un plugin.
location ~* /wp-content/uploads/.*\.(php|phtml|phar)$ {
    deny all;
}

4. Modificare i file dalla bacheca

L'editor incorporato trasforma una sessione di amministratore rubata in codice a piacere sul suo server. Quasi nessuno lo usa di proposito.

define('DISALLOW_FILE_EDIT', true);

Altre tre che non costano nulla

  • Sposti wp-config.php sopra la radice web, oppure la neghi esplicitamente. Contiene la password del database.
  • Spenga XML-RPC a meno che qualcosa non lo richieda: è un bersaglio abituale della forza bruta.
  • Nasconda la versione. Non è sicurezza, ma la toglie dalle ricerche di «siti con la versione X».
Dopo qualunque compromissione, cambi i sali in wp-config.php. Invalida ogni sessione, compresa quella dell'aggressore, ed è il passo che la maggior parte delle bonifiche dimentica.