Come proteggere il tuo sito Web WordPress dalle iniezioni SQL
Pubblicato: 2022-03-09WordPress è una delle piattaforme di creazione di siti Web più utilizzate grazie alla sua vasta gamma di potenziali applicazioni. Puoi creare un negozio online, ospitare un blog sul tuo hobby preferito, creare una community tramite forum o rappresentare una grande azienda.
Ma comunque lo usi, una responsabilità primaria è proteggere il tuo sito dagli hacker. Ecco perché è importante capire come prevenire gli attacchi SQL (Structured Query Language) injection.
La buona notizia è che ci sono molti passaggi che puoi intraprendere per proteggere il tuo sito WordPress da questo codice dannoso. Imparare a rilevare, rimuovere e prevenire le iniezioni SQL può aiutarti a proteggere efficacemente i tuoi dati preziosi e renderti meno suscettibile agli attacchi.
Che cos'è un'iniezione SQL e come funziona?
Per capire come funzionano le iniezioni, è utile prima imparare cos'è SQL. Questo è un linguaggio comune utilizzato nello sviluppo di database.
Il tuo sito web lo utilizza per recuperare informazioni critiche dal tuo database e generare contenuti dinamici. Alcuni dei database SQL includono MySQL (siti WordPress), MongoDB e SQL Server.
Il tuo sito Web WordPress utilizza un database per gestire i dati e i contenuti essenziali del tuo sito, come pagine, post e commenti. Organizza queste informazioni in tabelle.

Il tuo database è il luogo in cui vengono archiviati i tuoi dati più sensibili. Pertanto, qualsiasi attacco che lo espone può avere gravi conseguenze.
SQL injection (SQLI) è un tipo di metodo di hacking utilizzato dai criminali informatici per infiltrarsi e manipolare i database di WordPress. In sostanza, gli hacker possono sfruttare le lacune nella codifica back-end dei siti Web e inserire codice dannoso nei campi di immissione dei dati.
Questo codice consente agli attori malvagi di eseguire comandi SQL ai server di database tramite richieste Web utilizzando stringhe di query, cookie ed elementi <input>. Ciò significa che possono creare, accedere, modificare ed eliminare i dati dal database di WordPress.
Ci sono molti diversi punti di ingresso in cui ciò può verificarsi. I campi di immissione più comunemente utilizzati includono moduli di registrazione, accesso e contatto, nonché barre di ricerca e carrelli della spesa.
Supponiamo che tu abbia un modulo sul tuo sito web in cui i visitatori possono inserire il loro numero di telefono. I criminali informatici possono utilizzare quel campo di immissione per inserire codice dannoso che richiede il nome utente e la password dell'amministratore.
Tipi di iniezioni SQL
Esistono diversi tipi di iniezioni SQL. Una categoria è ciò che è noto come "in-band". Questo è il tipo più semplice di injection e include attacchi basati su errori.
Con questa tecnica, gli hacker utilizzano l'iniezione per ottenere dettagli sulla struttura del database e sui nomi delle tabelle. Ad esempio, un messaggio di errore può fornire il nome della tabella incluso in una query. Quindi l'hacker può utilizzare queste informazioni per creare nuovi attacchi.
Un altro tipo è quello che viene chiamato "iniezione SQL cieca". Questo è quando l'attaccante invia una serie di query al database per scoprire come il sito analizza le risposte. Ciò può aiutarli a sondare le risposte alle query SQL per identificare potenziali vulnerabilità e richiedere al database di trasmettere dati a una fonte esterna.
Quanto sono comuni le iniezioni SQL?
Sfortunatamente, gli attacchi SQL injection sono prevalenti. Infatti, secondo un report pubblicato da Akamai, tra il 2017 e il 2019 circa due terzi degli attacchi alle applicazioni software sono stati attribuiti a iniezioni SQL.
Un rapporto separato sulle statistiche sulle vulnerabilità del 2020 ha anche rivelato che le iniezioni SQL costituivano il 42% delle vulnerabilità critiche più comuni.
Le iniezioni SQL sono una possibilità per qualsiasi sito Web che utilizza database SQL, come i siti basati su WordPress, in particolare quelli che hanno campi di input come moduli di contatto e caselle di ricerca.
Perché le iniezioni SQL sono pericolose
Le iniezioni SQL sono pericolose per una serie di motivi. In primo luogo, danno agli hacker l'opportunità di rubare informazioni sensibili, come le credenziali di accesso o i dati dei clienti.
Gli hacker non solo possono utilizzare SQL injection per acquisire e rubare dati, ma possono anche utilizzarlo per eliminarli. Ciò significa che sei a rischio di perdere informazioni private ed essenziali utilizzate per gestire il tuo sito web.
Inoltre, c'è il rischio di danni alla reputazione e perdita di entrate. Una violazione dei dati può danneggiare la tua attività e potresti perdere la fiducia dei tuoi clienti o fan.
Inoltre, questi attacchi possono portare Google a bloccare il tuo sito. Se finisci in questo elenco, molti potenziali visitatori riceveranno un avviso che il tuo sito non è sicuro. La maggior parte di queste persone tornerà indietro e potrebbe non tornare mai più. Inoltre, Google declasserà in modo significativo le tue classifiche di ricerca, il che potrebbe portare a una grave perdita a lungo termine di traffico organico da cui è difficile recuperare.
Come rilevare le iniezioni SQL
Ci sono alcuni segnali che potrebbero indicare che sei caduto vittima di un attacco SQL injection. Uno è che stai improvvisamente ricevendo un afflusso di e-mail tramite il modulo di contatto del tuo sito. Un altro indicatore è se stai ricevendo strani popup, annunci e messaggi di errore, soprattutto se ti stanno reindirizzando a siti Web apparentemente imprecisi.
Sfortunatamente, i segni di un attacco SQL injection non sono sempre così evidenti. Come accennato in precedenza, a volte gli hacker vogliono utilizzare le iniezioni per rubare informazioni piuttosto che danneggiare il tuo sito web. Pertanto, possono utilizzare metodi più sottili che rendono più difficile il rilevamento.
Strumenti di rilevamento e scansione SQL injection
L'unico modo per sapere con certezza se sei stato preso di mira è condurre una scansione sul tuo sito web. Fortunatamente, ci sono una varietà di strumenti online che possono aiutarti a rilevare le iniezioni SQL sul tuo sito WordPress.
Ad esempio, puoi utilizzare Pentest Tools per eseguire due scansioni gratuite del tuo sito web.

Sono disponibili due opzioni: una scansione chiara o una scansione completa. Per quest'ultimo, dovrai passare a un piano a pagamento. Inserisci semplicemente l'URL del tuo sito web e fai clic sul pulsante Scansione target . Se sono presenti delle vulnerabilità, la scansione le rivelerà.
Come rimuovere le iniezioni SQL dal tuo sito Web WordPress
1. Ripristina un backup
L'opzione migliore per rimuovere le iniezioni SQL è ripristinare un backup del tuo sito. Se stai utilizzando Jetpack Backup, tutto ciò che devi fare è utilizzare il registro attività per determinare quando si è verificato l'attacco, quindi ripristinare un backup precedente a quel punto. Il tuo sito tornerà allo stato in cui si trovava prima dell'hacking.
Tuttavia, è importante notare che, in alcuni casi, le iniezioni SQL vengono eseguite a poco a poco, nel tempo. Potrebbe essere necessario tornare molto indietro per trovare un backup pulito, che potrebbe comportare la perdita di dati.
E sebbene il ripristino di un backup possa rimettere in funzione il tuo sito, se i dati sensibili sono stati rubati, dovrai comunque affrontare le ramificazioni della violazione.
2. Utilizzare un servizio di pulizia del sito web
Un'altra opzione consiste nell'utilizzare un servizio di pulizia del sito Web di terze parti per eseguire la scansione del sito e correggere eventuali iniezioni SQL. Sucuri è un'opzione: invia semplicemente il tuo sito Web al loro team e lascia che si occupino di tutto il resto. Dal momento che sono esperti, possono rimuovere il malware dal tuo database in modo più efficace rispetto allo sviluppatore medio.
3. Rimuovere le iniezioni da soli
Infine, se hai esperienza nella gestione e nell'utilizzo di MySQL, puoi ripulire manualmente il tuo database. Nota, tuttavia, che questa è una tecnica avanzata e se non sai cosa stai facendo, apportare modifiche può causare problemi.
Come prevenire le iniezioni SQL in futuro
Non c'è modo di garantire che il tuo sito sia sempre sicuro al 100%, ma ci sono misure che puoi adottare per ridurre al minimo il rischio di attacco. Diamo un'occhiata a otto metodi che puoi utilizzare per prevenire le iniezioni SQL in WordPress.
1. Convalida (o sanifica) i tuoi dati
La chiave per prevenire le iniezioni SQL in WordPress è proteggere qualsiasi campo di immissione che può essere utilizzato per inserire dati o contenuti sul tuo sito web. Ciò include sezioni e moduli di commento. Pertanto, è importante convalidare e disinfettare i dati inseriti in questi campi al momento dell'invio.
La convalida e la sanificazione degli input consentono di controllare i comandi inviati dagli utenti. La sanificazione consente anche di modificare i comandi. È un modo efficace per garantire che questi comandi non contengano codice dannoso o stringhe di caratteri.
La convalida garantisce che le informazioni inserite in un modulo corrispondano al formato richiesto prima di elaborare la richiesta. Ad esempio, se si dispone di un campo di immissione per un indirizzo e-mail, i dati non verrebbero convalidati se non fosse presente il simbolo '@'.
Il modo più semplice per creare la convalida per i dati del modulo è stabilire regole per i moduli. Il processo per farlo dipenderà dal plug-in specifico che stai utilizzando. Ad esempio, se utilizzi la versione premium di Formidable Forms, puoi aggiungere il tuo formato maschera di input personalizzato per i campi di testo.


L'aggiunta di requisiti di formato di input può limitare il rischio di SQL injection. La sanificazione può aiutare a garantire che i dati inseriti possano essere elaborati in modo sicuro una volta convalidati.
La maggior parte dei plug-in di moduli di WordPress disinfetta automaticamente i dati dei moduli. Tuttavia, puoi aggiungere ulteriori misure di sicurezza. Piuttosto che risposte aperte, considera l'utilizzo di menu a discesa e opzioni a scelta multipla. Puoi anche limitare l'uso di caratteri speciali.
2. Installa uno strumento di sicurezza per WordPress
Il plug-in di sicurezza di WordPress di Jetpack può monitorare il tuo sito per le vulnerabilità che potrebbero portare a iniezioni SQL. Questo ti dà l'opportunità di risolverli prima che qualcuno ne approfitti.
Con il monitoraggio dei tempi di inattività, saprai nel momento in cui il tuo sito si interrompe in modo da poter reagire rapidamente. E con i backup in tempo reale, puoi ripristinare completamente il tuo sito.
Fornisce inoltre strumenti di sicurezza come:
- Scansione malware per i tuoi file WordPress, insieme a correzioni con un clic per la maggior parte dei problemi
- Soluzioni anti-spam per proteggere i tuoi commenti e moduli di contatto
- Protezione dagli attacchi di forza bruta per tenere lontani gli hacker
3. Mantieni il tuo sito web e il tuo database sempre aggiornati
L'uso di software e strumenti obsoleti può introdurre un'intera gamma di vulnerabilità sul tuo sito che gli hacker possono sfruttare. Questo è il motivo per cui è importante assicurarsi di mantenere sempre aggiornato il proprio sito Web WordPress.
Attualmente, quasi la metà delle installazioni di WordPress non utilizza la versione più aggiornata. Pertanto, potresti prendere in considerazione l'abilitazione degli aggiornamenti automatici per assicurarti di eseguire sempre la versione più recente di WordPress.
Per fare ciò per gli aggiornamenti di base, puoi accedere a wp-config.php nella directory principale del tuo sito web. Quindi, copia e incolla il seguente snippet di codice nel file:
define( 'WP_AUTO_UPDATE_CORE', true );
Puoi abilitare gli aggiornamenti automatici per i tuoi plugin navigando su Plugin schermata dalla dashboard dell'amministratore. Quindi, fare clic su Abilita Aggiornamenti automatici dalla colonna all'estrema destra.

Per ridurre al minimo le vulnerabilità, ti consigliamo di rimuovere dal tuo sito eventuali plugin o temi inutilizzati. È anche saggio aggiornare la tua versione SQL. Se stai usando cPanel per il tuo pannello di controllo di hosting, puoi aggiornare il tuo software MySQL dalla tua dashboard. A seconda del tuo provider di hosting, potresti essere in grado di abilitare gli aggiornamenti SQL automatici.
4. Modifica il prefisso del database di WordPress
Per impostazione predefinita, ogni volta che installi WordPress, il CMS utilizza "wp_" come prefisso del database. Consigliamo vivamente di cambiarlo con qualcos'altro, poiché gli hacker possono usarlo per sfruttare le vulnerabilità tramite SQL injection.
Prima di iniziare, dovresti eseguire il backup del tuo database. In questo modo, se qualcosa va storto, hai una versione sicura da ripristinare.
Quindi, connettiti al tuo sito tramite il client FTP o il File Manager del tuo host e cerca il file wp-config.php , che si trova nella directory principale del tuo sito. Nel file, cerca la riga table_prefix, quindi cambia "wp_" in qualcos'altro:
$table_prefix = 'wp_a12345_';
Quando hai finito, salva il file. Questo è tutto!
5. Utilizzare un firewall
Un'altra strategia che puoi utilizzare per proteggerti da SQL injection è installare un firewall. Questo è un sistema di sicurezza di rete che ti aiuta a monitorare e controllare i dati che entrano nel tuo sito WordPress. Questo può catturare e filtrare il codice dannoso, compresi quelli provenienti da attacchi SQL injection.
È possibile utilizzare un'ampia varietà di strumenti firewall per WordPress. Alcune opzioni popolari includono Wordfence e Sucuri. Questi strumenti non impediranno agli aggressori di inviare comandi, ma possono aiutare a impedire loro di accedere effettivamente al tuo sito.
6. Nascondi la versione di WordPress che stai utilizzando
Avere la versione del tuo sito WordPress disponibile pubblicamente può rendere più facile per gli aggressori sfruttare le vulnerabilità note, poiché ogni versione viene fornita con il proprio set. Pertanto, per salvaguardare il tuo sito, ti consigliamo di nascondere la versione che stai utilizzando.
Farlo è facile e veloce. Per iniziare, copia semplicemente il seguente frammento di codice:
remove_action('wp_head', 'wp_generator');
Quindi, vai al file functions.php del tuo tema WordPress attuale. Puoi farlo direttamente dall'editor dei temi in WordPress, utilizzando un client FTP o utilizzando il File Manager del tuo host. Incolla il codice all'interno del file, quindi salva le modifiche.
7. Elimina le funzionalità di database non necessarie
Più funzionalità ha il tuo database WordPress, più è suscettibile agli attacchi. Per ridurre al minimo il rischio di SQL injection, considera la normalizzazione del database e l'eliminazione di funzioni e contenuti non necessari.
In poche parole, la normalizzazione del database si riferisce al processo di organizzazione dei dati. Lo scopo di questa operazione è eliminare tutti i dati ridondanti nel database e assicurarsi che tutte le dipendenze dei dati abbiano un senso. Puoi farlo mettendo il tuo database in First Normal Form.
Se desideri un'opzione più adatta ai principianti per ripulire il tuo database WordPress, puoi utilizzare un plug-in. Ci sono una manciata di solide opzioni tra cui scegliere, come WP-Optimize.
Questo plugin freemium ti aiuta a pulire il tuo database senza dover eseguire manualmente i comandi SQL tramite phpMyAdmin. Invece, puoi usarlo per ottimizzare il tuo database direttamente dalla dashboard di WordPress.

Rimuove tutte le informazioni non necessarie dal tuo database, inclusi i commenti spazzatura e non approvati. WP-Optimize ti consente anche di deframmentare le tabelle del database MySQL con un solo clic.
8. Limitare l'accesso e le autorizzazioni degli utenti
Puoi assegnare vari ruoli agli utenti di WordPress sul tuo sito web. Questi possono variare da un abbonato a un amministratore. Con ogni ruolo, puoi controllare la quantità di accesso concesso e quali "capacità" vengono fornite.
Per rafforzare la tua sicurezza, è meglio limitare il numero di ruoli con accesso amministratore completo e autorizzazioni utente. Meno persone sono in grado di modificare e inserire dati, meno è probabile che tu debba affrontare un attacco SQL injection.
Per personalizzare i ruoli utente e le autorizzazioni in WordPress, puoi accedere a Utenti → Tutti gli utenti .

Quindi, fai clic sul collegamento Modifica sotto il nome dell'utente per cui desideri limitare l'accesso e le autorizzazioni. Nella schermata successiva, puoi cambiare il loro ruolo utilizzando il menu a discesa Ruolo .
Quando gestisci i tuoi ruoli utente WordPress, ti consigliamo anche di eliminare tutti gli account che non sono più in uso. L'eliminazione dei ruoli obsoleti può ridurre al minimo le tue vulnerabilità.
9. Evita di usare plugin annullati
I plugin annullati sono strumenti premium che sono stati rubati e sono offerti gratuitamente. Anche se possono sembrare un ottimo affare, non solo stai danneggiando lo sviluppatore originale non pagandolo per il loro lavoro, ma stai anche rischiando un hack.
I plug-in annullati sono molto spesso pieni di codice dannoso e backdoor che offrono agli hacker un facile accesso al tuo sito. Evitali a tutti i costi e, invece, usa plug-in da fonti affidabili.
Proteggi il tuo sito WordPress dalle iniezioni SQL
Per salvaguardare il tuo sito Web e i tuoi dati dalla minaccia dei criminali informatici, è importante essere a conoscenza di alcuni dei metodi più comuni utilizzati per accedere al tuo sito. Quando si tratta di rafforzare la sicurezza del database, ciò significa essere esperti nelle iniezioni SQL.
Come abbiamo discusso in questo post, un'iniezione SQL può avere effetti dannosi sul tuo sito WordPress, dall'esposizione di dati sensibili alla perdita di contenuti e entrate. Fortunatamente, ci sono una manciata di passaggi che puoi eseguire per rilevare, rimuovere e prevenire gli attacchi di iniezione.
Nessun sito Web è mai del tutto sicuro, ma seguendo i suggerimenti e le tecniche di cui sopra, puoi ridurre significativamente le tue possibilità di cadere vittima di iniezioni SQL.