Come bloccare iniezioni SQL

December 16

SQL injection è una forma di attacco alla rete che coinvolge codice "iniezione" in un database nel tentativo di forzare il programma query di database per restituire un errore e dare l'iniettore alcune informazioni del database e le informazioni in esso. Essa può essere eseguita da qualsiasi pagina Web che funge da portale per un database insicuro e non disinfettare le sue domande.

istruzione

1 Assicurarsi di specificare il tipo di input richiesto quando si scrive il codice query SQL. La maggior parte dei ambienti di sviluppo consentono di specificare "stringa", "intero" o "data". Ad esempio, l'URL

http://mysite.com/listauthordetails.aspx?user_id=1234

è interpretato dal database come

SELECT nome, cognome FROM utenti WHERE user_id = '1234'

Questa query può essere riscritta per

ID Dim as String = Request.QueryString ( "ID")

Dim cmd Come nuovo SqlCommand ( "SELECT user_id degli utenti WHERE user_id = @user_id")

param dim = new SqlParameter ( "user_id", SqlDbType.VarChar)

param.Value = ID

cmd.Parameters.Add (param)

Questo codice impedisce ulteriori informazioni vengano aggiunti alla fine della query SQL, e passa solo il risultato della richiesta user_id.

2 Utilizzare il file .htaccess per bloccare le richieste illegittimi prima di essere passati al database, utilizzando il comando RewriteCond (). Ad esempio, per bloccare uno script cerca di modificare una variabile RICHIESTA, utilizzare la riga "RewriteCond% {} QUERY_STRING _REQUEST (= | [| \% [0-9A-Z] {0,2})" nel file .htaccess .

3 Prova il tuo codice query SQL prima di metterlo in servizio in diretta sul web. Questa è probabilmente la cosa più importante che si può fare, e dovrebbe essere fatto ogni volta che si aggiorna il sito.