ms-access
Consultas parametrizadas
Buscar..
Introducción
Las consultas parametrizadas se pueden usar para defenderse de los ataques de inyección de SQL.
Enfoque vulnerable: cadena SQL concatenada con referencias de formulario
Este es el enfoque típico para los desarrolladores novatos que crean consultas de acción SQL. Son vulnerables a los ataques de inyección SQL del tipo Bobby Tables .
Dim strSQL As String
strSQL = "INSERT INTO Employees chrFirstName, chrLastName, chrPhone " _
& "VALUES ('" & Me!txtFirstName & "','" & Me!txtLastName & "','" & Me!txtPhone & "');"
CurrentDb.Execute strSQL
QueryDef Parameterized Enfoque de consulta
Este enfoque evitará que un usuario incruste una segunda instrucción SQL en su entrada para la ejecución.
Dim strSQL As String
Dim db As DAO.Database
Dim qdf As DAO.QueryDef
strSQL = "PARAMETERS [FirstName] Text(255), [LastName] Text(255), [Phone] Text(255); " _
& "INSERT INTO Employees (chrFirstName, chrLastName, chrPhone) " _
& "VALUES ([FirstName], [LastName], [Phone]);"
Set db = CurrentDb
Set qdf = db.CreateQueryDef("", strSQL)
qdf.Parameters("FirstName") = Me!txtFirstName
qdf.Parameters("LastName") = Me!txtLastName
qdf.Parameters("Phone") = Me!txtPhone
qdf.Execute
Me!txtFirstName = vbNullString
Me!txtLastName = vbNullString
Me!txtPhone = vbNullString
qdf.Close
db.Close
Set qdf = Nothing
Set db = Nothing
Tipos de parámetros válidos:
-
DATETIME: para las fechas (el parámetro espera laDateVBA) -
SHORT,LONG: para enteros (SHORTespera un entero,LONGespera un largo) -
SINGLE,DOUBLE: para punto flotante (espera Single y Double respectivamente) -
VARCHARoTEXT: para cuerdas -
MEMOoLONGTEXT: para cadenas de más de 255 caracteres
Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow