"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo las consultas parametrizadas en SQL evitan los ataques de inyección SQL?

¿Cómo las consultas parametrizadas en SQL evitan los ataques de inyección SQL?

Publicado el 2025-02-06
Navegar:852

How Do Parameterized Queries in SQL Prevent SQL Injection Attacks?

consulta parametrizada y marca de preguntas

]]

Al buscar documentos SQL, puede encontrar un signo de interrogación (?) En su consulta. Estos marcadores de posición representan consultas parametrizadas y se utilizan ampliamente para ejecutar SQL dinámico en los programas.

La consulta parametrizada tiene muchas ventajas. Simplifican el código separando los valores de los parámetros de la consulta misma, lo que lo hace más eficiente y flexible. Además, mejoran la seguridad al prevenir los ataques de inyección SQL.

Por ejemplo, en un ejemplo de código de pseudo:

ODBCCommand cmd = new ODBCCommand("SELECT thingA FROM tableA WHERE thingB = 7")
result = cmd.Execute()

se puede reescribir como:

ODBCCommand cmd = new ODBCCommand("SELECT thingA FROM tableA WHERE thingB = ?")
cmd.Parameters.Add(7)
result = cmd.Execute()

Esta técnica asegura que las cadenas correctas escapen, eliminando el riesgo de inyección SQL. Considere el siguiente escenario:

string s = getStudentName()
cmd.CommandText = "SELECT * FROM students WHERE (name = '"   s   "')"
cmd.Execute()

Si el usuario ingresa a la cadena Robert '); Sin embargo, use la consulta parametrizada:

s = getStudentName()
cmd.CommandText = "SELECT * FROM students WHERE name = ?"
cmd.Parameters.Add(s)
cmd.Execute()

Funciones de la biblioteca limpia la entrada para evitar la ejecución del código malicioso.

o, Microsoft SQL Server usa parámetros nombrados, lo que mejora la legibilidad y la claridad:

cmd.Text = "SELECT thingA FROM tableA WHERE thingB = @varname"
cmd.Parameters.AddWithValue("@varname", 7)
result = cmd.Execute()
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3