Zoeken…


Invoering

Parameterized Queries kunnen worden gebruikt om te verdedigen tegen SQL Injection-aanvallen.

Kwetsbare aanpak: aaneengeschakelde SQL-tekenreeks met formulierverwijzingen

Dit is de typische aanpak voor beginnende ontwikkelaars die SQL-actiequery's maken. Ze zijn kwetsbaar voor de Bobby Tables SQL Injection-aanvallen.

Dim strSQL As String

strSQL = "INSERT INTO Employees chrFirstName, chrLastName, chrPhone " _
         & "VALUES ('" & Me!txtFirstName & "','" & Me!txtLastName & "','" & Me!txtPhone & "');"

CurrentDb.Execute strSQL

QueryDef geparametriseerde querybenadering

Deze aanpak voorkomt dat een gebruiker een tweede SQL-instructie insluit in zijn invoer voor uitvoering.

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

Geldige parametertypen:

  • DATETIME : voor datums (parameter verwacht VBA- Date )
  • SHORT , LONG : voor gehele getallen ( SHORT verwacht Geheel getal, LONG verwacht Lang)
  • SINGLE , DOUBLE : voor drijvende komma (verwacht respectievelijk enkel en dubbel)
  • VARCHAR of TEXT : voor tekenreeksen
  • MEMO of LONGTEXT : voor tekenreeksen langer dan 255 tekens


Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow