Formazione e diversity al centro della Summer STEM Academy: le nostre docenzelink
Security First

WordPress: come prevenire gli attacchi SQL Injection

5 minuti lettura
Come funziona un attacco SQL e come prevenirlo

WordPress è il CMS più utilizzato sul mercato, con una quota che sfiora il 70% comparato agli altri maggiori CMS, secondo le stime di W3Techs.

WordPress è un software open source e flessibile per realizzare siti e applicativi, spesso soggetto ad attacchi: un report di OWASP (Open Web Application Security Project, una comunità online che fa attività di ricerca nel campo della web security) ha evidenziato che al primo posto tra le vulnerabilità nel 2020 troviamo gli attacchi SQL Injection che rischiano di compromettere gravemente il tuo sito e lasciare esposti dati sensibili.

Cos’è un attacco SQL Injection?

Un attacco SQL Injection è una tecnica di hacking che consente all’utente malevolo l’inserimento e l’esecuzione di codice SQL non previsto all’interno di applicazioni web. Si basa sulla costruzione di query modificate che consentono all’utente malevolo di accedere al sito e al contenuto del database, all’hacking della macchina che ha in esecuzione il DBMS e ai privilegi di amministratore.

I siti che soffrono SQL Injection sono quelli dinamici, ossia contenenti script lato server (PHP, ASP, ecc) per gestire le informazioni e inoltrare le interrogazioni al DBMS (MySQL, Oracle, SQLserver, ecc).

Sfruttando una vulnerabilità SQL Injection, l’hacker può, tra le varie cose:

  • Estrarre informazioni sensibile bypassando i meccanismi di autorizzazione.
  • Controllare il comportamento dell’applicazione.
  • Iniettare ulteriore codice dannoso.
  • Alterare i dati, corrompere il database e renderlo inutilizzabile.

Quali sono i possibili punti d’ingresso per SQL Injection?

Alcuni tra gli entry point utilizzati per sferrare un attacco SQL Injection sono:

  • Form di iscrizione
  • Form di contatti
  • Barra di ricerca all’interno del sito
  • Form di accesso al sito stesso
  • Campi di feedback
  • Carrello

Ecco perché serve particolare attenzione alla messa in sicurezza del codice nei moduli di autenticazione e pagine di ricerca.

Come funziona un attacco SQL Injection?

Innanzitutto l’hacker deve capire come e quando l’applicazione interagisce con un server DB per accedere ai dati, osservando:

  • Moduli web: nel caso in cui l’autenticazione di un utente venga eseguita tramite un form, è probabile che le credenziali siano verificate rispetto un database che archivia l’informazione.
  • Motori di ricerca: la ricerca dell’utente può essere sfruttata in una query SQL per estrarre da un database i record rispondenti alla richiesta.
  • Siti e-commerce: anche le informazioni relative ai prodotti potrebbero essere archiviate in un database.

Un attacco SQL al database può avvenire, ad esempio, come accesso tramite un input filtrato erroneamente.

Per accedere ad un database, solitamente l’utente deve compilare un modulo di login con nome utente e password. Nel mentre, lo script effettua i controlli per confermare che all’interno del database esista il record corrispondente, creando una tabella nel database con queste informazioni.

uname = request.POST['username']
passwd = request.POST['password']

sql = "SELECT id FROM users WHERE username='" + uname + "' AND password='" + passwd + "'"

database.execute(sql)

Cosa può fare l’hacker in questo caso? Manipolare il campo della password tramite SQL Injection, ad esempio:

sql = "SELECT id FROM users WHERE username='' AND password='password' OR 1='1'

In questo modo, l’input della password è sempre vero (1=1’) e l’utente malevolo riesce ad ottenere l’accesso alla tabella utente del database: loggandosi come amministratore, può alterare tutti i record e il nome utente.

10 modi per prevenire un attacco SQL Injection in WordPress

Ecco i 10 passaggi che ti consigliamo di effettuare per rendere più sicuro il tuo sito in WordPress e proteggerti da attacchi SQL.

Aggiornare WordPress regolarmente

L’utilizzo capillare di WordPress lo rende spesso soggetto ad attacchi e vulnerabilità sul lato sicurezza: per un hacker è più facile individuare e sfruttare falle in un codice sorgente aperto rispetto a un codice proprietario. La community e gli sviluppatori sono sempre attenti e pronti al rilascio di aggiornamenti e patch per riparare i vari bug. Per aiutarti, è fondamentale aggiornare regolarmente il core di WordPress,  il linguaggio di programmazione PHP, i temi e i vari plugin.

Se hai domande o vuoi ricevere assistenza professionale per il tuo applicativo CMS, come WordPress,  puoi contattare il nostro servizio Web Genius.

Utilizzare la convalida dell’input e filtrare i dati utente

Come hai potuto vedere nell’esempio precedente, uno dei modi utilizzati per effettuare un attacco SQL è con l’accesso ai dati utente tramite input filtrato non correttamente. Proprio per questo, la convalida dell’input e del filtro per i dati inviati dall’utente può aiutarti a prevenire SQL Injection.

Per convalidare l’input, secondo la guida di WordPress stesso, basta testare tutti i dati che possono essere inviati da un utente.

Prediligere SQL statico

Ad un SQL dinamico è meglio preferire un SQL statico perché la forma dinamica del linguaggio genera ed esegue le istruzioni in modo automatico, creando possibili falle sfruttabili dagli hacker. Secondo le varie guide PHP è meglio scegliere istruzioni preparate, query con parametri e procedure memorizzate.

Utilizzare un firewall per una maggiore protezione

Per proteggere meglio il tuo sito o applicativo in WordPress puoi utilizzare un firewall, ossia un sistema di sicurezza di rete che esamina i dati e protegge da attacchi, come SQL Injection.

Definire i ruoli utente WordPress

Definire i ruoli utente in WordPress è utile per limitare i privilegi di accesso e, di conseguenza, limitare ciò che gli altri possono visualizzare e modificare per evitare di esporre il sito a un maggiore rischio di attacchi SQL.

Un consiglio: ricorda sempre di rimuovere utenti passati che non operano più nel back-end di WordPress, come i vari editor o collaboratori.

Condividere solo le informazioni necessarie

Ti consigliamo di creare messaggi generici per gli errori del database su una pagina personalizzata HTML così da non condividere informazioni aggiuntive che potrebbero essere sfruttate da utenti malevoli, come le credenziali di autenticazione o gli indirizzi e-mail degli amministratori.

Mantenere sul database solo le funzionalità necessarie

Ti consigliamo di normalizzare il database e mantenere solo le funzionalità necessarie, rimuovendo contenuti estranei per rendere il tuo sito più sicuro e meno vulnerabile ad attacchi SQL.

Cifrare i dati riservati

Un altro modo per incrementare la sicurezza del database consiste nel cifrare i dati riservati così da proteggerli da eventuali SQL Injection.

Monitorare le istruzioni SQL

Puoi aiutarti con applicazioni esterne per identificare possibili vulnerabilità in WordPress: in questo modo controllerai meglio le istruzioni SQL tra applicazioni connesse al database e otterrai informazioni utili su potenziali problemi.

Migliorare il software

Non basta tenere aggiornato WordPress: è fondamentale tenere aggiornati anche i sistemi per prevenire le tecniche di attacchi illegali in continua evoluzione che sfruttano falle nelle versioni meno aggiornate.

Plugin per aumentare la sicurezza in WordPress

Per proteggere meglio il tuo sito in WordPress puoi ricorrere all’utilizzo di plugin: pezzi di codice o veri e propri programmi che ampliano la piattaforma e le sue molteplici funzionalità.

Tra i vari plugin, ce ne sono alcuni molto utili da utilizzare per prevenire attacchi SQL Injection:

  • Sucuri Security

Sucuri Security è un plugin con più di 700.000 installazioni attive utile per monitorare chi accede al tuo sito e le relative modifiche, eseguire la scansione dei file alla ricerca di malware, monitoraggio della blacklist.

  • Wordfence Security

Wordfence Security, con più di 3 milioni di installazioni attive, è il plugin progettato appositamente per WordPress, offrendo al tuo sito un firewall per prevenire SQL Injection e l’autenticazione a due fattori e scansionando i file alla ricerca di malware.

  • All in One WP Security & Firewall

L’ultimo plugin di sicurezza è All In one WP Security & Firewall che dispone di un firewall aggiuntivo e rende più difficile ai bot tentare di registrarsi come utenti.

Imposta il plugin desiderato ed esegui la configurazione, attivando le funzionalità che desideri e garantendo maggiore sicurezza al tuo sito.

Elena Parise

Note sull'autore
Marketing Assistant - Appassionata di scrittura e social media, crede fortemente nell’influenza positiva del digitale e della comunicazione nella vita quotidiana. In Shellrent supporta le imprese nell’identificazione delle soluzioni più adatte in materia di hosting, cloud e infrastrutture IT.
Articoli
Articoli correlati
Security First

Let’s Encrypt o Certificato SSL a pagamento? Vantaggi e svantaggi

2 minuti lettura
Meglio un Certificato SSL a pagamento o Let’s Encrypt? È la domanda che si pongono moltissimi proprietari di siti web, indecisi sulla…
Security First

Direttiva PSD2: cos’è e cosa cambia

3 minuti lettura
Arriva la nuova direttiva europea PSD2 (Payment Services Directive II) che rivoluziona i servizi bancari di pagamento online, spingendo verso un sistema…
Security First

Quanto è protetto il tuo WordPress?

2 minuti lettura
Se da un lato WordPress alimenta più di un terzo tra i migliori 10 milioni di siti online, con una quota di…