Che cos'è SQL Injection?

SQL Injection è una tecnica di iniezione di codice utilizzata per attaccare le applicazioni basate sui dati inserendo istruzioni SQL dannose nel campo di esecuzione. Il database è una parte vitale di qualsiasi organizzazione. Questo è gestito da una sicurezza di alto livello in un'organizzazione. Per prima cosa impariamo cos'è l'SQL.

Che cos'è SQL?

SQL è un linguaggio di query strutturato. Utilizzato per interagire e manipolare il database.

Cosa fa esattamente SQL?

  • Crea un nuovo database.
  • Inserisci, aggiorna, elimina record.
  • Crea nuove query.
  • Procedura di archiviazione.
  • Crea viste.
  • Esegui query.
  • Imposta autorizzazioni.

L'iniezione SQL è una delle principali minacce alla sicurezza. Questo rientra nella criminalità informatica.

In SQL abbiamo un concetto chiamato SQL Injection. Questa tecnica viene utilizzata per iniettare il codice. SQLi (SQL injection è anche noto come un tipo di hacking, ovvero attacco ad iniezione). È anche noto come tecnica di hacking web.

Questa iniezione inietta codice dannoso nel database fornendo input in una pagina Web. Questi input stanno avendo alcune condizioni, che sono sempre vere. In queste condizioni, gli hacker superano facilmente i test di sicurezza. Possono facilmente ottenere dati dal database SQL. Con SQL Injection possono aggiungere, modificare ed eliminare i record nel database. Quel database può essere chiunque tra MySQL, SQL Server, Oracle, SQL Server, ecc. È illegale.

Se un sito Web o un'applicazione non è progettato correttamente, questi attacchi potrebbero danneggiare l'intero sistema. A questo punto, la sicurezza informatica entra in scena.

Il comportamento dell'iniezione SQL

Questi attacchi generalmente funzionano su istruzioni SQL dinamiche. L'iniezione SQL dipende da un motore di database. Ciò differisce da motore a motore. Quando chiediamo input all'utente sulla pagina web come username e password. Inavvertitamente stiamo dando all'utente l'accesso per fornire quell'input direttamente nel database.

Tipi di iniezione SQL

  1. Iniezione SQL in-band (iniezione SQL classica): in questa tecnica, l'hacker utilizza lo stesso modo per hackerare il database e ottenere i dati, ovvero i risultati dal database.
  1. Iniezione SQL basata su errori: in questo tipo, l'hacker ottiene il modello di errore del database e accede ad esso. Possiamo dire che questo è l'unico tipo di iniezione SQL in banda.
  1. Iniezione SQL basata su Union: questa tecnica fa anche parte dell'iniezione SQL in-band. In questa tecnica, l'utente combina la query e recupera il risultato come parte della risposta HTTP.
  1. Iniezione di SQL inferenziale (iniezione di Blind SQL): come suggerisce il nome, qui l'hacker non utilizza la banda per ottenere dati dal database. Il pirata informatico ha la capacità di cambiare la struttura del database osservando i modelli del database. Questo è un tipo molto pericoloso di iniezione SQL. Questo attacco richiede più tempo per essere eseguito. Hacker non è in grado di vedere l'output dell'attacco con questa tecnica.
  1. Iniezione di Blind SQL basata su booleani (basata sul contenuto): questa è una parte dell'iniezione di SQL inferenziale. In questa tecnica, l'hacker impone al database di recuperare il risultato in base alla condizione vera o falsa. A seconda di questa condizione, il risultato della risposta HTTP viene modificato. Questo tipo di attacco consente di dedurre se il payload utilizzato ha restituito vero o falso, anche se non vengono restituiti dati dal database. Questi attacchi particolarmente lenti.
  1. Iniezione di Blind SQL basata sul tempo: questa tecnica è anche la parte dell'iniezione di SQL inferenziale. Questa tecnica viene utilizzata dagli hacker per inserire i payload. In questa tecnica gli hacker danno tempo al database per eseguire la query. Nel frattempo, l'hacker ottiene un'idea del risultato se è vero o falso. Anche questo processo di attacco è lento in natura.
  1. Iniezione SQL fuori banda: si tratta di un attacco basato su funzionalità. Questo non è molto comune. Questo attacco viene utilizzato da un hacker quando un hacker deve utilizzare canali diversi per attaccare e altri per ottenere il risultato. Le tecniche di iniezione SQL fuori banda dipendono dalla capacità del server di database di effettuare richieste DNS o HTTP per consegnare dati all'hacker.

Come funziona?

Esistono principalmente due modi in cui l'attaccante si concentra per ottenere dati:

  1. Attacco diretto: usando direttamente la combinazione di valori diversi. Qui l'hacker inserisce l'input confermato che dà il risultato esatto.
  2. Ricerca: analisi del database fornendo input diversi. Qui, l'attaccante osserva le risposte del server di database e decide quale attacco deve essere eseguito.

Come abbiamo già discusso, gli hacker di SQL injection hanno inserito la condizione nell'elemento input che è sempre vera. Si prega di controllare il seguente esempio.

EX:

Supponiamo di avere la seguente query per ottenere i dati dei dipendenti dal database:

500 O 1 = 1

Seleziona * dai dipendenti Dove Userid = '500'

ID utente :

Se non abbiamo alcuna restrizione sull'input dell'utente. Quindi gli hacker possono utilizzare questo campo per accedere facilmente ai dati dal database.

E la query potrebbe apparire come di seguito

Seleziona * dai dipendenti in cui User-id = 500 OR 1 = 1;

Questa query restituirà i dati dal database perché 1 = 1 restituirà sempre true. In questo modo la condizione diventa vera. Questo sembra vulnerabile. Questo è molto pericoloso per l'organizzazione. Ad esempio, pensa al settore bancario. Laddove gli utenti dispongono di password di dati bancari netti, informazioni sul saldo, ecc

Questa tecnica è molto semplice per l'hacker per ottenere informazioni. Dando semplicemente qualche input al database.

Gli hacker ottengono i dati semplicemente inserendo OR e = inserendoli nel database.

Nome utente:

"O" "="

Parola d'ordine:

"O" "="

Sul server, la query finale viene eseguita correttamente non si verificano errori. Inoltre, è possibile utilizzare 'OR' 1 '=' 1 per ottenere dati dal server di database.

Ora, sorge la domanda, come potremmo mantenere la sicurezza del nostro database?

E la risposta è usando i parametri SQL.

Aggiungendo parametri aggiuntivi alla query quando viene eseguita. Questi attacchi sono facilmente prevenibili con alcune tecniche sottostanti.

Le procedure di prevenzione, le dichiarazioni preparate, le espressioni regolari, i diritti di accesso dell'utente alla connessione al database, i messaggi di errore, ecc. Sono le tecniche di prevenzione .

Un'altra cosa che, dovremmo pensare, è anche sensato avere diversi database per scopi diversi nell'applicazione.

Un'altra cosa che si presenta è il test. Testare il database per le diverse condizioni è anche il modo migliore.

Conclusione

La creazione di un database è una parte cruciale. Avere il rischio di ottenere informazioni nella mano degli hacker non è buono per nessuna applicazione. Quindi, durante la creazione del database dobbiamo seguire alcuni semplici passaggi per prevenire questa perdita, una frase adatta a questo è "Prevenire è meglio che curare".

Articoli consigliati

Questa è stata una guida a What is SQL Injection. Qui discutiamo il comportamento, come funziona e i tipi di iniezione SQL. Puoi anche consultare i nostri altri articoli suggeriti per saperne di più -

  1. Che cos'è SQL Server?
  2. Che cos'è SQL | Spiegazione del linguaggio delle query
  3. Che cos'è SQL Developer?
  4. Aggiornamento dei comandi SQL
  5. Espressioni regolari in Java

Categoria: