.NET, Java e altre API di database di alto livello in varie lingue spesso forniscono tecniche note come istruzioni preparate e associazione di parametri anziché inviare comandi di testo normale al server Database. Quello che vorrei sapere è ciò che accade quando si esegue una dichiarazione come questa:Parameter Binding: cosa succede sotto il cofano?
SqlCommand cmd = new SqlCommand("GetMemberByID");
cmd.CommandType = CommandType.StoredProcedure;
SqlParameter param = new SqlParameter("@ID", memberID);
para.DbType = DbType.Integer;
cmd.Parameters.Add(param);
So che questa è una pratica migliore. Gli attacchi di SQL injection sono ridotti al minimo in questo modo. Ma cosa succede esattamente quando si eseguono queste affermazioni? Il risultato finale è ancora una stringa SQL sicura? In caso contrario, qual è il risultato finale? E questo è sufficiente per prevenire attacchi di SQL injection?