Non si "risolvono" i problemi di SQL injection. Bene, le persone lo fanno, ma è sbagliato. Quello che devi fare è non permettere che succedano in primo luogo. Lo strumento principale è, come sottolinea @TerryChia, istruzioni SQL parametrizzate . Le istruzioni SQL parametrizzate sono molto efficaci nella prevenzione degli attacchi SQL injection, essendo una soluzione generica e completa; questo è molto migliore, incomparabilmente migliore di qualsiasi altro tipo di "sanificazione dei dati di input".
Gli attacchi di SQL injection si verificano perché il sito Web sta tentando di interpretare i dati forniti dall'utente (contenuto del campo) come codice (in fondo SQL è un linguaggio di programmazione, dopotutto). Questa strategia di implementazione è condannata. Non può essere veramente "riparato"; vedi questa risposta per alcune discussioni concettuali su questo argomento .
"Quando l'unico strumento che possiedi è un martello, allora tutti i problemi dovrebbero essere unghie, perché li colpisci ripetutamente sulla testa". Tenere presente che le istruzioni SQL parametrizzate, sebbene siano ampiamente applicabili e efficienti (più delle tradizionali istruzioni SQL "dinamiche"), non possono fare tutto ; ci sono contesti molto rari e specifici in cui la creazione dinamica di istruzioni SQL è l'unica soluzione. Ma questa non è la tua situazione - lo sapresti già, e anche tutto ciò che scrivo in questa risposta.
Gli "strumenti di test" dell'iniezione SQL non sono soddisfacenti in alcun modo: non sono pensati per garantire la sicurezza, ma per attaccare il "frutto a basso impatto". Perderanno la stragrande maggioranza delle possibili iniezioni SQL. Il loro scopo è quello di permettere ad un attaccante non tecnico di credere comunque che sia una specie di hacker di alto livello; o per automatizzare i tentativi di attacco su migliaia di siti distinti. Ciò che questi strumenti ti diranno è a senso unico: se riesci a entrare nel tuo sito, allora sai che il sito è estremamente vulnerabile; tuttavia, se non riescono , non sai nulla.
Tuttavia , se vuoi ottenere uno strumento oltre un sistema di "sessione di accesso" (nonostante tutto ciò che ho spiegato sopra), allora dipende da come viene gestito l'accesso. La maggior parte dei siti Web utilizza una "pagina di accesso" che risulta nell'impostazione di un valore del cookie nel client; quel cookie rappresenta lo stato "loggato" ed è sufficiente inviarlo al server per essere considerato parte della "sessione". Gli strumenti di test di iniezione SQL consentono di includere valori di cookie arbitrari nella richiesta, che è ciò che si richiede. Vedi, ad esempio, la documentazione sqlninja (cerca la seconda occorrenza della parola "cookie" in quella pagina) .