ms-access
Query parametrizzate
Ricerca…
introduzione
Le query parametrizzate possono essere utilizzate per difendersi dagli attacchi SQL Injection.
Approccio vulnerabile: stringa SQL concatenata con riferimenti di moduli
Questo è l'approccio tipico per gli sviluppatori principianti che creano query di azioni SQL. Sono vulnerabili agli attacchi di tipo SQL Injection di 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 Query Approach
Questo approccio impedirà a un utente di incorporare una seconda istruzione SQL nel proprio input per l'esecuzione.
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
Tipi di parametri validi:
-
DATETIME: per le date (il parametro si aspetta laDateVBA) -
SHORT,LONG: per numeri interi (SHORTaspetta numero intero,LONGaspetta per molto tempo) -
SINGLE,DOUBLE: per virgola mobile (prevedere rispettivamente Single e Double) -
VARCHARoTEXT: per archi -
MEMOoLONGTEXT: per stringhe più lunghe di 255 caratteri
Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow