Che cos'è un attacco di SQL Injection / a causa di una vulnerabilità?
Questa FAQ risposta è stata scritta da k4thryn:
Una vulnerabilità di SQL iniezione può verificarsi quando un mal scritto programma utilizza l'utente ha fornito dati in un database di ricerca, senza la convalida del primo ingresso. Si tratta più spesso all'interno di pagine Web con contenuti dinamici. Ci sono alcuni ottimi tutorial e descrittivo articoli su questo argomento, così come molte vulnerabilità pubblicati per applicazioni diverse dalla piena divulgazione dei siti web.
Un semplice esempio di SQL iniezione HTML di base è una forma di accesso in cui si fornisce un nome utente e la password:
<form method="post" action="process_login.php"> <input type="text" name="username"> <input type="password" name="password"> </ form>
Dato questo frammento di codice HTML, si può dedurre che la soluzione più semplice (e peggiori) per lo script "process_login.php" a lavorare per essa sarebbe di costruire un database ed eseguire query che assomiglia a questo:
"SELECT id DA login DOVE username = '$ username' e la password = '$ password' ";
In tali circostanze, se le variabili "$ username" e "$ password" sono prese direttamente dal manuale d'ingresso, script di accesso possono facilmente essere ingannato a credere che una password valida è stata fornita da giocare con la sintassi di SQL. Supponiamo la seguente stringa sono stati forniti, come la password:
'O''='
e ci ha dato "bob" come nome utente. Una volta che le variabili sono interpolati, la query di cui sopra sarebbe simile a questa:
"SELECT id DA login DOVE username = 'Bob' e la password =''o''''= ";
Questa query restituisce una riga perché la clausola finale:
... =''o''
sempre valutare a true (una stringa vuota è sempre uguale a una stringa vuota).
Prevenire gli attacchi SQL Injection
I più comuni metodi per prevenire questo tipo di iniezione SQL vunerability sono per verificare l'utente ingresso per pericolose caratteri come unico apici e preparati utilizzando le dichiarazioni, che raccontano la banca dati esattamente cosa aspettarsi prima di qualsiasi utente fornito dati è passata ad esso.
|






