WordPress è di gran lunga la piattaforma più usata per realizzare la maggior parte dei siti web: dal blog all’e-commerce, dal sito vetrina al portale turistico. Questo però ha come diretta conseguenza il fatto che sia anche potenzialmente vulnerabile agli attacchi hacker. Nello specifico, analizzeremo alcune delle tecniche per proteggersi e possibilmente prevenire gli attacchi SQL injection.
Ti chiederai come fare SQL injection e soprattutto che significa. Facciamo quindi una premessa. L’SQL injection (dove SQL sta per Structured Query Language) è una tecnica di programmazione, usata per attaccare applicazioni di gestione dati, con la quale vengono inseriti delle stringhe di codice SQL malevole all’interno di campi di input in modo che vengano eseguiti.
Sfrutta le vulnerabilità di sicurezza del codice di un’applicazione, ad esempio quando l’input dell’utente non è correttamente filtrato da ‘caratteri di escape’ contenuti nelle stringhe SQL oppure non è fortemente tipizzato e viene eseguito inaspettatamente.
La caratteristica principale dei CMS e quindi di WordPress, rispetto allo sviluppo in solo HTML, è proprio quella di utilizzare un database per memorizzare i dati necessari alla visualizzazione del contenuto del sito web.
Se questi non vengono opportunamente validati (con un’analisi del testo), l’hacker sarebbe in grado di inserire dei comandi che potenzialmente potrebbero interagire con il database.
SQL injection: classico e blind
Esistono due tipi di attacchi SQL injection il “classico” e il “blind”.
Mentre nel classico la vulnerabilità di SQL vede un input dell’utente non filtrato permettendo a un utente malintenzionato di inviare comandi al database ed avere una risposta; il “blind” consente al malintenzionato di inviare comandi al database, ma non permette di avere l’output del database.
Una SQL injection è in grado di generare un elenco di database a cui l’hacker ha accesso, oltre alla visione delle tabelle del database e gli consente di scaricare una serie di informazioni sensibili.
3 tecniche per proteggersi dagli attacchi SQL injection
Analizziamo quindi le tre migliori tecniche che consentono di proteggere dalla SQL injection un sito web realizzato e sviluppato mediante WordPress, il CMS più utilizzato nel mondo.
1. Pulire ed eliminare tutto ciò che può interferire con il database
Il modo più semplice per fare questo con WordPress, è quello di utilizzare la tecnica di preassegnare dei valori alle variabili tramite l’utilizzo dei placeholders all’interno del database MySQL.
2. Limitare i privilegi degli utenti dei database
Di default MySQL offre diverse tipologie di account e privilegi di accesso al database MySQL.
Tuttavia, non sempre sono necessari per l’uso quotidiano delle attività connesse a WordPress:
- creazione di nuovi utenti;
- post nel blog;
- caricamento di file multimediali;
- commenti agli articoli;
- installazione di plugin.
L’utente del database MySQL ha bisogno solo delle funzioni di lettura e scrittura cioè: SELECT, INSERT, UPDATE e DELETE. Altre strutture di database MySQL e una abbondanza di privilegi di amministrazione, come, ad esempio DROP, ALTER e GRANT possono essere revocate.
Questo mette in atto una politica di contenimento considerevole per prevenire gli attacchi SQL injection.
3. Backup dei dati e codifica (criptazione)
Encrypt & Backup sono due elementi fondamentali per questo passaggio.
Questa tecnica si basa sui seguenti punti:
- codificare il backup;
- mantenere una registrazione indipendente degli hash MD5;
- esportare i backup su supporti esterni;
- realizzare degli snapshot ad intervalli regolari dell’installazione di WordPress;
- assicurarsi che gli snapshot includano tutti i file del core di WordPress compreso il database (meglio se questo è esterno al server su cui è installato WordPress).
In questo modo, anche se il sito ha subìto un attacco SQL injection, avendo fatto il backup sarà possibile ripristinare il sito in poco tempo.
Oltre il backup dei dati, un suggerimento utile è quello di camuffare l’account amministrativo cambiandogli il nome ed o il prefisso nelle tabelle del database. Questo può prevenire gli attacchi pre-programmati.
SQL injection: conclusione
Queste sono solo tre tecniche che semplificano la vita ai sistemisti e consentono agli sviluppatori web di realizzare siti WordPress un minimo più sicuri. Certamente le difficoltà sono tante ma è importante approcciare queste problematiche nel migliore dei modi.
Nel limite del possibile dobbiamo sempre fare il massimo per prevenire qualsiasi tipo di attacco. Lo ripeto ancora una volta, non dimenticare mai di:
- fare un backup del tuo sito web meglio se automatizzato e in un posto diverso da dove è ospitato il sito;
- aggiornare il core di WordPress e tutti i plugin che hai utilizzato.
Questo è il punto di partenza, poi potrai adottare altre soluzioni, anche più complesse.
Restiamo in attesa dei tuoi suggerimenti e delle tecniche o dei plugin che eventualmente utilizzi per proteggere il tuo sito web dagli attacchi hacker. Scrivili nei commenti, grazie.
Lascia un commento