Proteggere il vostro sito WordPress dagli attacchi SQL injection è necessario per salvaguardare i vostri dati e mantenere la fiducia dei vostri visitatori.
L’iniezione SQL è una tecnica comunemente utilizzata dagli hacker per attaccare il vostro database. Una volta fatto, gli hacker possono leggere i dati sensibili, modificarli e prendere il controllo dell’intero database.
Per proteggere il vostro sito web da questa minaccia, è fondamentale implementare forti misure di sicurezza sul vostro sito web.
Noi di WPBeginner prendiamo molto sul serio la sicurezza e abbiamo fatto di tutto per proteggere il nostro sito da hacker e malware. Molte delle pratiche di sicurezza che raccomandiamo contro gli attacchi SQL injection sono metodi che noi stessi abbiamo utilizzato con successo.
In questo articolo condivideremo alcuni consigli pratici per prevenire gli attacchi SQL injection in WordPress, passo dopo passo.
Perché prevenire gli attacchi SQL Injection di WordPress?
SQL è l’acronimo di Structured Query Language, un linguaggio di programmazione che comunica con il database del vostro sito WordPress. Senza questa funzione, il sito non può generare contenuti dinamici.
Tuttavia, un input non autorizzato da parte dell’utente, un software non aggiornato o la rivelazione di informazioni sensibili possono causare una vulnerabilità della sicurezza e facilitare l’esecuzione di attacchi SQL injection da parte degli hacker.
Questo attacco prende di mira il server del database e aggiunge codice o dichiarazioni dannose all’SQL. In questo modo, gli hacker possono utilizzare le informazioni sensibili memorizzate nel database, come i dati degli utenti, per il furto di identità, l’acquisizione di account, le frodi finanziarie e altro ancora.
Possono anche modificare le voci del database o le autorizzazioni dell’account ed eseguire attacchi DDoS, rendendo difficile per gli utenti reali visitare il vostro sito web.
Questo può danneggiare la fiducia dei clienti, avere un impatto negativo sull’esperienza dell’utente e diminuire il traffico del sito web, con conseguenze negative per la crescita della vostra piccola impresa.
Detto questo, diamo un’occhiata ad alcuni suggerimenti praticabili che possono prevenire gli attacchi SQL injection in WordPress. Ecco una rapida panoramica di ciò che tratteremo in questo articolo:
- Perform Site Updates Regularly And Use a Firewall
- Hide Your WordPress Version
- Change the WordPress Database Prefix
- Validate User Data
- Limit User Role Access and Permissions
- Create Custom Database Error Messages
- Remove Unnecessary Database Functionality
- Bonus: Use WPBeginner Pro Services to Create a Secure Site
Nota: prima di apportare modifiche al database, a scopo preventivo, si consiglia di crearne un backup. In questo modo, se qualcosa dovesse andare storto, potrete utilizzare il backup per correggerlo. Per maggiori dettagli, consultate il nostro tutorial su come creare un backup del database di WordPress manualmente.
1. Eseguire normali aggiornamenti del sito e utilizzare un firewall
Un modo efficace per prevenire gli attacchi SQL injection consiste nell’aggiornamento normale del sito WordPress all’ultima versione. Questi aggiornamenti spesso correggono le vulnerabilità della sicurezza, compresi i problemi del software del database, rendendo difficile per gli hacker attaccare il vostro sito.
Se si utilizza una versione obsoleta di WordPress, si consiglia di abilitare gli aggiornamenti automatici per l’ultima versione visitando la pagina Bacheca ” Aggiornamenti.
Qui è sufficiente fare clic sul link “Abilita gli aggiornamenti automatici per tutte le nuove versioni di WordPress”. Ora, tutti i principali aggiornamenti saranno installati sul vostro sito al momento del rilascio.
Per ulteriori informazioni, potete consultare la nostra guida per principianti su come aggiornare WordPress in modo sicuro.
Una volta fatto ciò, è possibile aggiungere un firewall per una maggiore sicurezza. Questa caratteristica funge da scudo tra il sito e il traffico in entrata e blocca le minacce più comuni alla sicurezza, compresi gli attacchi SQL, prima che raggiungano il sito web.
Se gestite una piccola azienda online, vi consigliamo Sucuri, uno dei migliori firewall per WordPress presenti sul mercato. Offre un firewall a livello di applicazione, una prevenzione della forza bruta e servizi di rimozione di malware e blacklist, il che lo rende un’ottima scelta.
Abbiamo un’esperienza diretta con questo strumento. In passato ci ha persino aiutato a bloccare 450.000 attacchi WordPress sul nostro sito web.
Detto questo, Sucuri potrebbe non essere abbastanza potente per i siti più grandi e ad alto traffico. In questo caso, potreste prendere in considerazione Cloudflare, che può offrirvi funzioni di sicurezza e una rete di distribuzione dei contenuti (CDN) impressionante.
Se non siete sicuri di quale sia l’opzione migliore per il vostro sito web, verificate il nostro articolo sul perché siamo passati da Sucuri a Cloudflare o il nostro confronto tra Sucuri e Cloudflare.
2. Nascondere la versione di WordPress
Di default, WordPress visualizza il numero di versione corrente del software che utilizzate sul vostro sito web. Ad esempio, se si utilizza WordPress 6.4, questa versione viene visualizzata sul sito per il monitoraggio.
Tuttavia, la visibilità pubblica del numero di versione può creare minacce alla sicurezza e rendere più facile per gli hacker eseguire attacchi di tipo WordPress SQL injection.
Questo perché ogni versione di WordPress ha le sue vulnerabilità uniche che gli aggressori possono sfruttare dopo aver scoperto la vostra versione. In questo modo potranno aggiungere snippet di codice dannoso al vostro sito attraverso campi di input vulnerabili.
È possibile rimuovere facilmente il numero di versione dal sito aggiungendo il seguente frammento di codice al file functions.php.
add_filter('the_generator', '__return_empty_string');
Una volta fatto questo, gli hacker non saranno in grado di trovare il numero di versione di WordPress attraverso gli scanner automatici o in qualsiasi altro modo.
Nota: tenere presente che un piccolo errore nell’aggiunta del codice può rendere inaccessibile il sito web. Per questo motivo consigliamo WPCode. È il miglior plugin per gli snippet di codice che rende l’aggiunta di codice personalizzato al vostro sito super sicura e facile.
Per maggiori dettagli, consultate il nostro tutorial sul modo corretto di rimuovere il numero di versione di WordPress.
3. Cambiare il prefisso del database di WordPress
Di default, WordPress aggiunge il prefisso wp_ a tutti i file del database, il che rende facile per gli hacker pianificare un attacco mirando al prefisso.
Il modo più semplice per prevenire gli attacchi SQL injection è cambiare il prefisso predefinito del database con qualcosa di unico che gli hacker non saranno in grado di indovinare.
È possibile farlo facilmente collegando il sito web tramite FTP. Dopodiché, aprire il file wp-config.php e trovare la riga $table_prefix
. Quindi, potete cambiarlo dal semplice wp_
predefinito a qualcosa di diverso come questo: wp_a123456_
.
$table_prefix = 'wp_a123456_';
Successivamente, è necessario visitare il cPanel del proprio account di hosting web. Per questa esercitazione, utilizzeremo Bluehost. Tuttavia, il vostro cPanel potrebbe avere un aspetto diverso a seconda dell’azienda di web hosting.
Qui, passare alla scheda “Avanzate” e fare clic sul pulsante “Gestisci” accanto alla sezione “PHPMyAdmin”.
Si aprirà una nuova pagina in cui si dovrà selezionare il nome del database dalla colonna di sinistra e passare alla scheda “SQL” in alto.
Successivamente, è possibile aggiungere la seguente query SQL nella casella di testo.
Ricordarsi di cambiare il prefisso del database con quello scelto durante la modifica del file wp-config.php.
RENAME table `wp_comments` TO `wp_a123456_comments`;
RENAME table `wp_links` TO `wp_a123456_links`;
RENAME table `wp_options` TO `wp_a123456_options`;
RENAME table `wp_postmeta` TO `wp_a123456_postmeta`;
RENAME table `wp_RENAME table `wp_commentmeta` TO `wp_a123456_commentmeta`;
posts` TO `wp_a123456_posts`;
RENAME table `wp_terms` TO `wp_a123456_terms`;
RENAME table `wp_termmeta` TO `wp_a123456_termmeta`;
RENAME table `wp_term_relationships` TO `wp_a123456_term_relationships`;
RENAME table `wp_term_taxonomy` TO `wp_a123456_term_taxonomy`;
RENAME table `wp_usermeta` TO `wp_a123456_usermeta`;
RENAME table `wp_users` TO `wp_a123456_users`;
Per ulteriori istruzioni, potete consultare il nostro tutorial su come cambiare il prefisso del database di WordPress per migliorare la sicurezza.
4. Validare i dati dell’utente
Gli hacker sono soliti iniettare attacchi SQL nel vostro sito web utilizzando campi per l’inserimento dei dati degli utenti, come le sezioni dei commenti o i campi dei moduli di contatto.
Per questo motivo è importante convalidare tutti i dati inviati sul vostro blog WordPress. Ciò significa che i dati degli utenti non saranno inviati sul vostro sito se non seguono un formato specifico.
Ad esempio, un utente non potrà inviare il modulo se il campo dell’indirizzo email non contiene il simbolo ‘@’. Aggiungendo questa valida funzione alla maggior parte dei campi del modulo, si possono prevenire gli attacchi di tipo SQL injection.
Per farlo, è necessario Formidable Forms, un plugin avanzato per la creazione di moduli. È dotato di un’opzione “Formato della maschera di input” in cui è possibile aggiungere il formato che gli utenti devono seguire per inviare i dati del campo del modulo.
È possibile aggiungere un formato specifico per i numeri di telefono o per i singoli campi di testo.
Se non volete convalidare i campi del vostro modulo, vi consigliamo WPForms perché è il miglior plugin per moduli di contatto con una protezione completa dallo spam e il supporto di Google reCAPTCHA.
Inoltre, consente di aggiungere menu a discesa e caselle di controllo ai moduli, rendendo difficile per gli hacker aggiungere dati dannosi.
Per maggiori dettagli, consultate il nostro tutorial su come creare un modulo di contatto sicuro in WordPress.
5. Limitare l’accesso e le autorizzazioni del ruolo dell’utente
Un altro consiglio per prevenire gli attacchi di WordPress SQL injection è quello di limitare l’accesso degli utenti al sito web.
Ad esempio, se il vostro blog è multi-autore, avrete diversi autori, abbonati e amministratori. In questo caso, è possibile migliorare la sicurezza del sito limitando l’accesso completo all’amministratore.
È possibile limitare tutti gli altri ruoli degli utenti alle funzioni specifiche di cui hanno bisogno per svolgere il loro lavoro. In questo modo si riduce l’accesso degli utenti al database e si prevengono gli attacchi di tipo SQL injection.
È possibile farlo con il plugin gratuito Remove Dashboard Access. Dopo l’attivazione, è sufficiente visitare la pagina Impostazioni ” Accesso alla dashboard, dove è possibile decidere quali ruoli utente possono accedere alla dashboard.
Se volete limitare gli utenti in base alle loro capacità, potete consultare il nostro tutorial su come add-on e rimozione delle capacità dai ruoli degli utenti in WordPress.
Allo stesso modo, è possibile limitare gli autori ai propri articoli nell’area di amministrazione per una maggiore sicurezza.
6. Creazione di messaggi di errore personalizzati per il database
A volte gli utenti possono imbattersi in un errore di database sul sito web, che può visualizzare informazioni importanti sul database, rendendolo vulnerabile agli attacchi SQL injection.
In questo caso, si consiglia di creare un messaggio personalizzato di errore del database che verrà visualizzato dagli utenti quando si imbatteranno in questo errore comune. A tale scopo, è necessario copiare e incollare il seguente contenuto in un blocco note e salvare il file come “db-error.php”.
<?php // custom WordPress database error page
header('HTTP/1.1 503 Service Temporarily Unavailable');
header('Status: 503 Service Temporarily Unavailable');
header('Retry-After: 600'); // 1 hour = 3600 seconds
// If you wish to email yourself upon an error
// mail("your@email.com", "Database Error", "There is a problem with the database!", "From: Db Error Watching");
?>
<!DOCTYPE HTML>
<html>
<head>
<title>Database Error</title>
<style>
body { padding: 20px; background: red; color: white; font-size: 60px; }
</style>
</head>
<body>
You got problems.
</body>
Dopodiché, collegate il vostro sito a un programma FTP e caricate il file appena creato nella directory /wp-content/ del vostro sito.
Ora, quando gli utenti riscontrano un errore di database sul vostro sito web, vedranno un messaggio di errore che li informa del problema senza rivelare alcuna informazione sensibile.
Inoltre, nella scheda del browser web verrà visualizzato il titolo “Errore del database”.
Per maggiori dettagli, consultate il nostro tutorial su come add-on una pagina personalizzata di errore del database in WordPress.
7. Rimuovere le funzionalità di database non necessarie
Per prevenire gli attacchi SQL injection, dovreste anche cercare di rimuovere tutte le funzionalità del database e i file non necessari sul vostro sito web.
Ad esempio, è possibile eliminare le tabelle non necessarie, le cestine o i commenti non approvati che possono rendere il database vulnerabile agli hacker.
Per rimuovere le funzionalità inutili del database, consigliamo WP-Optimize. È un plugin incredibile che rimuove le tabelle non necessarie, le revisioni dei post, le bozze, i commenti cestinati, gli articoli eliminati, i pingback, i metadati degli articoli e molto altro ancora.
Rimuove tutti i file non necessari e ottimizza il database per renderlo più sicuro e veloce. Per maggiori dettagli, consultate la nostra guida per principianti su come ottimizzare il database di WordPress.
Bonus: Usare i servizi Pro di WPBeginner per creare un sito sicuro
Una volta prese tutte le misure preventive contro gli attacchi di SQL injection, si può anche optare per i Servizi Pro di WPBeginner.
Possiamo aiutarvi a identificare e correggere qualsiasi altra vulnerabilità di sicurezza di cui non siete a conoscenza. Inoltre, se avete già subito un attacco SQL injection, i nostri esperti possono aiutarvi a contenere i danni e a recuperare i vostri sistemi.
Potete anche assumerci per migliorare l’ottimizzazione della velocità del vostro sito, il design, la SEO o anche per ricostruire completamente il vostro sito WordPress esistente, che sia stato violato o meno.
Per ulteriori informazioni, selezionate tutti i nostri servizi professionali WPBeginner.
Speriamo che questo articolo vi abbia aiutato a capire come prevenire gli attacchi SQL injection di WordPress. Potreste anche leggere la nostra guida per principianti su come verificare gli aggiornamenti di sicurezza di WordPress o la nostra guida definitiva alla sicurezza di WordPress.
Se questo articolo vi è piaciuto, iscrivetevi al nostro canale YouTube per le esercitazioni video su WordPress. Potete trovarci anche su Twitter e Facebook.
Syed Balkhi
Hey WPBeginner readers,
Did you know you can win exciting prizes by commenting on WPBeginner?
Every month, our top blog commenters will win HUGE rewards, including premium WordPress plugin licenses and cash prizes.
You can get more details about the contest from here.
Start sharing your thoughts below to stand a chance to win!