Dominio Email & Office Sito web WordPress Hosting VPS
Indietro
.com
$ 9.99 $ 26.99 /1 ° anno
.org
$ 7.99 $ 24.99 /1 ° anno
Indietro
Accedi
Pannello di controllo Webmail Editor Web E-commerce File Manager WordPress

Cos’è un SQL injection

Guarda i nostri esempi di SQL injection per capire come funzionano gli attacchi SQL

Structured Query Language, comunemente noto anche come SQL injection, è una vulnerabilità della sicurezza web che espone ad attacchi. Un attacco SQL injection consente a un hacker di visualizzare dati di cui non dovrebbe essere a conoscenza o sui quali non sarebbe in grado di mettere le mani. Parliamo di dati sensibili, che possono appartenere ad un utente o di dati a cui può accedere un’applicazione.

Cosa se ne fa un hacker di questi dati? Di solito, l’hacker cancella i dati dall’applicazione web o li trasforma completamente, per causare problemi e modificare il comportamento dell’applicazione.

In alcuni casi, chi esegue l’attacco SQL injection sul server dell’applicazione web ha l’obiettivo di comprometterne il funzionamento.

Quali conseguenze provoca un attacco SQL injection?

Molte aziende vengono danneggiate dagli attacchi SQL injection, e parliamo anche di grandi aziende. Se la tua azienda ne subisce uno, è ovvio che avrà un impatto negativo sulla tua attività. Tra le conseguenze di un attacco SQL injection, c’è la perdita di informazioni private degli utenti, e ciò è terribile per la reputazione della tua azienda. Senza contare che perdere questo tipo di informazioni è illegale, a causa della legge sulla protezione dei dati. Pertanto, è essenziale adottare misure preventive per evitare qualsiasi attacco.

Esempio di attacco SQL injection

Diciamo che hai un sito di e-commerce e una categoria dedicata alla vendita di scarpe da ginnastica. Un utente interessato all’acquisto di questo tipo di scarpe visita questa categoria sul tuo sito e quando clicca sulla categoria il suo browser richiederà:

https://fake-website.com/products?catgory=Sneakers.

La tua applicazione web effettuerà una query SQL per ricevere dal database i dettagli delle informazioni rilevanti su quella categoria.

La query SQL molto probabilmente sarà letta come:

Select * FROM products WHERE category = ‘Sneakers’ AND released = 1

In questo istante, la query SQL sta chiedendo al database di restituire i dettagli della categoria di prodotti che hai, in particolare, la categoria delle tue scarpe da ginnastica.

Released = 1 è una restrizione. Il numero 1 è stato inserito per nascondere i prodotti che non sono ancora stati lanciati, per esempio alcune varianti di sneakers che vuoi commercializzare in futuro. Quel 1 farà in modo che non siano visibili dal pubblico.

La tua applicazione web potrebbe non avere alcun modo per proteggersi da un attacco SQL injection. Quindi, un utente malintenzionato potrebbe eseguire un attacco in questo modo:

https://fake-website.com/products?catgory=Sneakers’–

Che si tradurrebbe in una query SQL simile a questa:

Select * FROM products WHERE category = ‘Sneakers’–‘ AND released = 1

La doppia sequenza di trattini è un indicatore di commento che indica che la query è un commento. Se il sistema crede che la query sia un commento, non può sapere che si tratta di un attacco. Successivamente, il doppio trattino rimuoverà il resto della query (AND released = 1), e come conseguenza verranno rilasciate informazioni su tutti i tuoi prodotti presenti nella tua categoria, anche quelli che non erano ancora stati pubblicati.

Lo scopo di chi esegue un attacco SQL potrebbe essere anche quello di scoprire tutti i prodotti che vendi sul tuo sito web, ogni articolo in tutte le diverse categorie.

E in questo caso l’attacco potrebbe avvenire in questo modo:

https://fake-website.com/products?catgory=Sneakers’+OR+1=1–

Che si tradurrebbe in una query SQL simile a questa:

Select * FROM products WHERE category = ‘Sneakers’ OR 1=1–’ AND released = 1

L’invio di questa query restituirà informazioni su tutti gli articoli del tuo sito web.

Esistono molti altri modi in cui un utente malintenzionato può eseguire un attacco SQL injection. Soffermiamoci brevemente su di essi.

  • Booleano

Colui che attacca invia una query SQL che restituisce rapidamente un risultato dal database. Utilizzando questo metodo booleano, l’autore dell’attacco può determinare se il risultato restituito è vero o falso.

  • Time delay

Chi attacca invia una query per mettere in attesa il database, creando un ritardo. Usando questo metodo, l’hacker saprà se la query che ha inviato è vera o falsa in base al tempo impiegato dal database per rispondere.

  • Out of band network

L’hacker può eseguire un attacco fuori banda se il server utilizzato dal database dispone di determinate funzionalità necessarie. L’aggressore ritirerà i dati attraverso il canale fuori banda e li posizionerà da qualche altra parte. Questo tipo di attacco conta sul server per creare una richiesta DNS o HTTP e trasferire i dati privati ​​all’hacker.

Attacchi SQL injection

Gli attacchi SQL injection più comuni avvengono nella clausola “where” di una query di selezione. Tuttavia, possono verificarsi anche all’interno di altri tipi di query, come le istruzioni di aggiornamento, di inserimento, di selezione o nella clausola order by.

Come prevenire un attacco SQL injection?

Puoi prendere le misure già oggi! La maggior parte dei punti vulnerabili ad un attacco SQL injection può essere trovata rapidamente.

  • Scanner

Usa lo scanner di vulnerabilità web di Burp Suites. È possibile utilizzare questo scanner impostando i test su ogni entry point dell’applicazione.

Puoi cercare errori, differenze sistematiche e verificare le risposte dell’applicazione che ricevi.

  • Convalida dell’input e WAF

Se utilizzato da solo, un codice in grado di identificare gli utenti illegittimi non è un metodo a prova di bomba. Può creare molti falsi positivi. Implementare questo metodo accanto all’utilizzo di un firewall per applicazioni web, o web application firewall (WAF), può essere la soluzione efficace. Il WAF filtrerà SQLI e altre minacce online.

Quando il WAF rileva un utente illegittimo, verificherà i dati IP prima di bloccare la sua richiesta. Pertanto, se i dati IP avranno una cattiva reputazione, verranno bloccati.

Stai al sicuro là fuori!