Nel percorso di ottimizzazione c'è anche la fase che ci permette di prevenire attacchi al database di WordPress. Nello specifico, dobbiamo prenderci cura di eventuali danni portati avanti grazie a una tecnica malevola, e non di rado molto efficace: la SQL Injection operata su un sito Web basato sul CMS.
Essa consiste nell'inserimento di codice non autorizzato nel database del tuo progetto online. Questa è una delle minacce più gravi che possono minare la sicurezza delle pagine Internet.
Le SQL Injection sono un problema perché una violazione del database di WordPress può comportare danni rilevanti. D'altro canto, stiamo parlando del cuore di un progetto Web: influenzare le tabelle dei dati vuol dire poter accedere al tuo sito e modificarne il funzionamento. La buona notizia? Puoi fare qualcosa per evitare il peggio.
Cos'è una SQL Injection su WordPress
Il concetto di SQL Injection è già stato approfondito più volte su HTML.it. Ad esempio, qui trovi una guida dettagliata su cosa sono questi tipi di attacchi che sfruttano le vulnerabilità delle applicazioni collegate ad un database SQL.
Nel contesto di WordPress, possiamo definire quest'attività come un'azione mossa da malintenzionati che puntano a inserire codice SQL malevolo nei campi di input dell'applicazione per eseguire comandi sul database e per danneggiare il sito Web.
Perché si operano le SQL Injection?
Vuoi prevenire attacchi al database di WordPress? Devi sapere innanzitutto che gli scopi di un attacco SQL Injection possono essere anche molto differenti. Ad esempio, si può violare un e-commerce e rubare informazioni sensibili come indirizzi di posta elettronica, nominativi, recapiti, numeri di carte di credito e altri dati personali.
Inoltre, c'è sempre la drammatica possibilità di subire un bypass di autenticazione del proprio sito Internet. Un caso concreto? Prendendo come base una query SQL del genere:
SELECT * FROM users WHERE username = 'user' AND password = 'pass';
Per compromettere l'integrità potrebbe bastare l'inserimento di user' OR '1'='1
nella combinazione. Il motivo è semplice: dato che '1'='1'
è sempre vero, la query restituisce tutti gli utenti.
I danni imposti all'autenticazione sono solo una parte dei possibili attacchi SQL. Ci possono essere anche estrazioni delle informazioni in modo da danneggiare l'attività o il sito internet. Insomma, i motivi per avorare in questa direzione sono tanti. Ma anche le soluzioni disponibili sono numerose.
Come prevenire attacchi al database
Per evitare attacchi al tuo database devi iniziare dalle principali regole di sicurezza su WordPress. Questo significa, ad esempio, utilizzare un hosting di qualità che lavori con le ultime versioni di phpMyAdmin e includa un Web application firewall (WAF). Ovvero, la soluzione efficace per bloccare attacchi al database.
La sezione di phpMyAdmin per inserire le query.
Un'altra attenzione che può fare la differenza in termini di sicurezza informatica è quella di aggiornare plugin, temi e CMS con le ultime patch, in modo da evitare falle che potrebbero diventare punti di accesso per attacchi basati sul codice SQL.
Punta su password sicure
A prescindere dal tipo di minaccia, per proteggere il tuo database WordPress devi assicurarti che la password utilizzata sia complessa e ricca di parametri in grado di mettere in difficoltà i programmi che tentano di indovinare la combinazione con la quale è stata generata. Per essere a prova di malintenzionato quest'ultima deve contenere un mix di lettere maiuscole e minuscole, numeri e caratteri speciali. Assicurati anche di cambiare periodicamente la password.
Definisci il giusto debug
Il file config.php
è uno degli elementi più importanti per gestire al meglio la sicurezza del tuo database WordPress. Ad esempio, attraverso di esso è possibile disabilitare la modalità di debug impostando define('WP_DEBUG', false);
.
Per operare in questa direzione, e mettere in sicurezza il tuo database WordPress, devi accedere al server tramite un client FTPe fare clic destro sul file per scaricarlo.
Ora aprilo con un editor di testo (tipo Notepad++). Cerca la riga con la costante WP_DEBUG
. Se non esiste, puoi aggiungerla. Se è impostata su true
puoi modificarla in false
.
Uso di query parametrizzate
Altro consiglio fondamentale: bisogna fare in modo che i dati vengano inseriti nella query SQL con parametri predefiniti, anziché essere concatenati nella stringa della richiesta.
In questo modo è impossibile iniettare comandi SQL malevoli, migliorando anche l'esecuzione di query ripetitive. Ecco un esempio di connessione al database:
$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass);
Gestisci al meglio i permessi
Hai fatto accesso con l'FTP? Sempre sul file config.php
, per prevenire attacchi al database WordPress, puoi operare un'altra modifica importante per mettere in sicurezza il tuo portale.
Nello specifico? Una volta trovato il file devi selezionare la voce dei permessi. Questo può essere fatto inserendo il numero 600
o selezionando le caselle appropriate. Il risultato finale deve essere:
Owner Permissions: Read (X) Write (X)
Group Permissions: Read ( ) Write ( ) Execute ( )
Public Permissions: Read ( ) Write ( ) Execute ( )
Numeric value: 600
Cambiare prefisso delle tabelle
C'è un punto da sottolineare se vuoi prevenire attacchi al database WordPress: questo CMS utilizza 'wp_'
come prefisso predefinito delle tabelle del database. Sarebbe cosa buona modificare e personalizzare questa voce per aiutare ad anticipare gli attacchi.
Puoi cambiare il prefisso durante l'installazione di WordPress o modificando il file wp-config.php
e rinominando manualmente le tabelle nel database. In questo file, cerca la linea che definisce il prefisso $table_prefix = 'wp_';
modificando il termine wp_
con quello che preferisci. Puoi eseguire quest'operazione per ogni singolo elemento, poi disattiva tutti i plugin e i temi per riattivarli in modo da aggiornare i file con il nuovo prefisso.