.NET, Java y otras API de bases de datos de alto nivel en varios idiomas a menudo proporcionan técnicas conocidas como declaraciones preparadas y enlace de parámetros en lugar de enviar comandos de texto plano al servidor de la base de datos. Lo que me gustaría saber es lo que sucede cuando se ejecuta una sentencia como esta:Encuadernación de parámetros: ¿Qué sucede debajo del capó?
SqlCommand cmd = new SqlCommand("GetMemberByID");
cmd.CommandType = CommandType.StoredProcedure;
SqlParameter param = new SqlParameter("@ID", memberID);
para.DbType = DbType.Integer;
cmd.Parameters.Add(param);
Sé que esto es una buena práctica. Los ataques de inyección SQL se minimizan de esta manera. Pero, ¿qué sucede exactamente bajo el capó cuando ejecutas estas declaraciones? ¿El resultado final sigue siendo una cadena SQL segura? Si no, ¿cuál es el resultado final? ¿Y esto es suficiente para evitar los ataques de inyección SQL?