Security First

Sito WordPress: come prevenire gli attacchi SQL Injection

5 minuti lettura
Come prevenire attacchi SQL Injection in un sito WordPress?

WordPress è il CMS più utilizzato nel mondo dello sviluppo web, con una quota del 63% secondo le stime di W3Techs.

Si tratta di un software open source e flessibile per realizzare siti web e applicativi. Per il rovescio della medaglia, la popolarità e diffusione di WordPress ne fanno il CMS più vulnerabile. Tra gli attacchi che più frequentemente interessano un sito WordPress troviamo gli SQL Injection.

Cos’è un attacco SQL Injection?

Un attacco SQL Injection è una tecnica di hacking tramite cui il malintenzionato inserisce codice SQL all’interno di applicazioni web. Si basa sulla costruzione di query SQL (istruzioni utilizzate per comunicare con un database) che consentono all’utente di accedere al database e compromettere il sito web mediante l’iniezione di codice dannoso.

Sfruttando l’attacco SQL Injection, l’hacker può:

  • Estrarre informazioni sensibili bypassando i meccanismi di autorizzazione.
  • 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 database 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

Come più volte sottolineato, la prevenzione è la difesa migliore a tutela del tuo progetto web. Di seguito, avrai modo di conoscere le migliori pratiche per prevenire gli attacchi SQL Injection.

Aggiornare WordPress regolarmente

La Community alle spalle di WordPress è sempre attenta e pronta al rilascio di aggiornamenti e patch per risolvere le vulnerabilità. Per questo motivo, l’attività di aggiornamento è fondamentale, sia essa riguardi il core, che il linguaggio di programmazione, i temi e i plugin.

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 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.

Mantenere 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à.

Migliori plugin per WordPress

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

  1. 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.

  • MalCare

MalCare è un plugin facile da installare, scelto da più di 50 mila siti. Tra le principali funzioni troviamo l’individuazione di malware, anche sconosciuti, e la rimozione automatica degli stessi. Inoltre, offre al tuo sito un firewall che monitora il traffico al tuo sito bloccando le richieste malevole.

  • iThemes Security Pro

iThemes Security Pro è un plugin molto utilizzato per proteggere il sito da minacce varie come malware e attacchi brute force. Inoltre, include individuazione di errori 404, generatore di password forti, 2-factor authentication e scansione automatica dei malware.

  • Jetpack Security

Jetpack rientra tra i plugin più conosciuti in tema sicurezza di WordPress. Include scansione dei malware, backup, protezione da spam e un buon livello di personalizzazione. Offre inoltre aggiornamenti in tempo reale sul traffico del sito web, ricerche e commenti.

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

In conclusione

Una corretta manutenzione del sito WordPress rende più difficile il lavoro degli hacker ed è necessario per ridurre al minimo la superficie di manovra fraudolenta dell’utente. Tuttavia, se temi che il tuo sito WordPress sia stato vittima di azioni malevole, puoi affidarti al nostro servizio Web Genius per ottenere il supporto di esperti webmaster che potranno aiutarti nell’individuazione e nella risoluzione della problematica.

Avatar photo
460 articoli

Note sull'autore
Appassionata di comunicazione digitale, in Shellrent scrivo e condivido contenuti tecnici, informativi e novità del mondo IT. Fuori dall'ufficio mi divido tra stadi, montagna e altri angoli del mondo.
Articoli
Articoli correlati
Security First

Cos’è e come funziona un attacco brute force

3 minuti lettura
Esistono diversi attacchi cyber che possono compromettere il funzionamento dei siti web. Tra questi, il brute force è uno dei più frequenti e…
Security First

Cos'è un "trojan horse" e come difendersi dal malware

4 minuti lettura
Nel corso degli anni, la sicurezza informatica ha acquisito un’importanza sempre più centrale. Una delle minacce più diffuse nel settore è il…
Security First

Come verificare se un indirizzo IP è in blacklist e come rimuoverlo

3 minuti lettura
Se i messaggi di posta elettronica non raggiungono i destinatari, una delle prime ipotesi da prendere in considerazione è la possibilità che…