SQL injection: cosa sono e come possiamo proteggerci

SQL injection cosa sono e come possiamo proteggerci

SQL injection cosa sono e come possiamo proteggerci

WordPress è il più famoso gestore di contenuti (o CMS – Content Management System) al mondo con oltre il 56% dei siti web mondiali che utilizzano questa piattaforma.

Essendo un software completamente open source personalizzabile da chiunque abbia un minimo di dimestichezza con HTML, CSS, PHP, Javascript e MySQL, è più facile che venga bucato rispetto ai siti web che utilizzano altre piattaforme o del semplice codice HTML.

WordPress ovviamente è molto comodo grazie all’utilizzo dei famosi plugin che aiutano ad inserire sempre più funzioni e strumenti al sito web ma aumentano anche potenzialmente la possibilità di essere oggetto di hacking. Non per ultima considerazione prendiamo l’utilizzo del database MySQL che WordPress utilizza e che gli hacker trovano molto “appetitoso”.

Da anni le SQL injection sono una vera e propria piaga del web e se non ci si mette al riparo in fretta, si rischia veramente di vedere completamente annullato il lavoro di una vita.

Scopriamo quindi cosa sono le SQL injection e come possiamo metterci al riparo.

Cosa sono le SQL injection

WordPress comunica con un database MySQL che di solito può essere visualizzato con il programma phpMyAdmin, installato di default in tutti i nostri servizi di Hosting.

Qui arrivano i problemi: se non si protegge efficacemente l’installazione WordPress con alcuni accorgimenti, le SQL Injection ossia l’inserimento di stringhe malevoli di codice SQL all’interno dei form di contatto in modo che queste siano poi eseguite dal database, sono all’ordine del giorno.

Ecco quindi alcuni accorgimenti che vi aiuteranno a mettere in sicurezza la vostra installazione WordPress e quindi il vostro sito web.

Il funzionamento del database

Ogni volta che viene richiesta una pagina, WordPress genera una query SQL, consulta il database per il contenuto collega il contenuto del database ad una struttura, ossia il tema o template che è attivo su WordPress, per mostrare il contenuto e renderlo fruibile all’utente.

Con l’aiuto di PHP SQL, le query vengono eseguite dal sistema per apportare modifiche al database di WordPress; pensiamo ad esempio a quando andiamo ad aggiornare un contenuto, o creiamo una pagina o la andiamo ad eliminare.

Come può essere bucato il database

Con tutte queste query che vengono richieste ed eseguite, gli hacker non hanno bisogno di connettersi direttamente ad un database tramite WordPress o ad un pannello di controllo ma possono bucarlo in molti altri modi, anche più semplici e banali. 

Gli sviluppatori di siti web hanno creato negli anni delle convenzioni che ormai sono diventate uno standard, vedi ad esempio il logo in alto a sinistra su ogni sito web che si rispetti, il menù in alto e, non per ultimo come importanza, almeno un form di contatto.

I form di contatto sono molto comodi ma questi form possono anche essere utilizzati dagli hacker.

Per form di contatto non intendiamo soltanto quello che può essere all’interno della pagina “chi siamo”, ma anche quello per l’accesso al backend del sito: il wp-admin (nel caso ovviamente di WordPress).

Gli hacker possono tranquillamente utilizzare questi form per inserire codice malevolo all’interno del database MySQL che poi può essere eseguito a sua volta causando perdite di dati, cambiamenti al backend del sito o, peggio ancora, la rimozione totale dei contenuti.

Questa attività viene chiamata appunto SQL injection.

Se nel nostro sito abbiamo un form di contatto, questo può essere usato inserendo codice SQL in un campo di testo libero, dove non c’è un controllo sui caratteri che l’utente inserisce.

Gli hacker potranno poi utilizzare un browser per far restituire i dati o qualunque altra informazione vogliano grazie all’inserimento di queste stringhe nel database: informazioni del database o, ad esempio, la struttura delle tabelle (le famose tabelle di WordPress a default sono impostate a “wp_”) con la probabilità di avere poi altri tentativi di hacking nel sito web.

Un’altra modalità molto famosa per l’inserimento di una injection SQL, è quella in modalità definita “cieca”: l’inserimento della stringa non mostra alcun dato del database ma l’hacker lo userà poi per eseguire direttamente del codice nel database con la conseguente eliminazione di tutti i dati.

Grafico dei tipi di vulnerabilità: le SQL injection sono a circa il 18%.

Grafico dei tipi di vulnerabilità: le SQL injection sono a circa il 18%.

Come proteggersi dagli attacchi di SQL injection

Facciamo un esempio: se nel nostro sito abbiamo un form di contatto che prevede un campo con l’inserimento di un numero di telefono, questo dovrebbe consentire soltanto l’inserimento di numeri e non di altri caratteri come quelli speciali: limitiamo quindi i caratteri per i campi del form di contatto. 

WordPress di fatto non è completamente protetto contro le SQL injection, pensate che nel 2017 WordPress ha aggiornato un problema di sicurezza che andava a risolvere un exploit SQL che interessava direttamente i file interni della piattaforma. L’aggiornamento però non ha risolto la stessa problematica con temi e plugin che di fatto sono rimasti direttamente e potenzialmente vulnerabili.

Altra cosa importante da capire è che le SQL injection non causano problemi ai servizi di Hosting quindi è sempre meglio adottare delle “policy” di sicurezza costanti nel tempo, magari utilizzando dei sistemi collaudati per lo sviluppo di un sito web.

A seguire vi lasciamo con una lista di sei suggerimenti utili per proteggersi il più possibile dalle SQL injection.

Le magnifiche sei best practice per proteggersi dalle SQL injection

1. Utilizzare plugin affidabili ed aggiornati

Il titolo pensiamo che sia già abbastanza chiaro: cerchiamo di utilizzare soltanto plugin famosi, aggiornati e supportati. WordPress è veramente un ottimo strumento ma bisogna appunto conoscerne le varie sfaccettature: a cliccare e ad installare plugin siamo capaci tutti, fare invece una cernita di quelli che sono più sicuri è decisamente la strada da seguire.

2. Aggiorna regolarmente la versione di WordPress

Gli aggiornamenti automatici di WordPress possono veramente salvarvi la vita. Avete presente quello che dicevamo prima per l’aggiornamento WordPress del 2017? Non ha funzionato per molte persone perché questi avevano disabilitato gli aggiornamenti automatici di WordPress. Ovviamente non intendiamo gli aggiornamenti delle release maggiori, ma di quelli minori come ad esempio la versione di WordPress 5.0.1 o 5.0.3.

Altra cosa da tenere in considerazione è la versione PHP attiva nello spazio web. Quella ufficiale odierna è la 7.2 quindi perché dovreste continuare ad utilizzare la versione 5.6?

Per quanto riguarda invece l’aggiornamento di temi e plugin, il WordPress Toolkit può darvi una grossa mano per l’automatizzazione degli aggiornamenti tenendo sempre sotto controllo tutta la vostra installazione WordPress.

3. Limitare i tipi di caratteri nei form contatto

Uno dei modi più efficaci per proteggerci dalle SQL injection è bloccare le richieste direttamente nel form di contatto: ogni campo dovrebbe limitare i tipi di caratteri soltanto a quelli necessari alla compilazione.

Esempio: un form di contatto con il campo “numero di telefono” non dovrebbe consentire l’inserimento di caratteri alfabetici, ma solo numerici.

4. Non utilizzare il nome predefinito del database di WordPress

Questo è un trucco di sicurezza WordPress davvero semplice. Di default il database WordPress ha un prefisso delle tabelle “wp_”. In questo modo, è più facile per un hacker utilizzare le credenziali dei database, in particolare con i robot e gli script automatici. Cambiate questo nome predefinito rendendolo più difficile. 

5. Utilizzare un firewall per applicazioni Web

Una WAF (Web Application Firewall) può rilevare i tentativi di injection SQL analizzando gli input dei moduli automaticamente. Questi sistemi bloccano anche gli IP che cercano di fare l’accesso malevolo al database. Tra i vari sistemi WAF sul mercato, segnaliamo il famoso plugin Wordfence

6. Backup

Non smetteremo mai di dirvi quanto sia importante il backup che vi consente sempre di “tornare indietro” nel momento in cui si verificassero dei problemi al sito web.

Ovviamente l’ideale sarebbe avere un servizio dedicato che lavora esternamente al server dove risiede il sito web per ovvie questioni di sicurezza, ma laddove non ci fosse questa possibilità, si potrebbe anche agire manualmente in determinati periodi di tempo.

Conclusione

WordPress è veramente un comodo e potente CMS, in grado di aiutarci nella realizzazione di un sito web o blog. La sua interfaccia molto semplice consente, anche a chi non conosce i linguaggi di programmazione, di creare pagine/articoli e di abbinarci anche un qualunque tipo di form di contatto.

Tutta questa “semplicità” però non è da prendere sottogamba perché, come per qualunque altro sistema informatico, è da considerarsi un vero e proprio “sistema operativo del web”, che ha bisogno di costanti attività di manutenzione e aggiornamenti.

Queste attività devono esser fatte da persone che sono del mestiere o che hanno una grossa esperienza, così da poter mettere al riparo in modo efficace o quasi, il sito web in questione grazie all’uso degli accorgimenti che abbiamo visto in questo articolo.

Oltre al funzionamento di WordPress, speriamo quindi di avervi aiutato a capire quali siano i problemi delle SQL injection e le problematiche ad esse collegate: le iniezioni di database sono un modo incredibilmente comune per hackerare un sito Web, ma per fortuna sono prevenibili.

Non ci resta che darvi appuntamento al prossimo articolo 😉

Fonte (parziale), Fonte (immagine).

Rispondi all'articolo

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati *

Time limit is exhausted. Please reload the CAPTCHA.