MS Access - uniknięcie SQL injection.

0

Cześć. Jak zabezpieczyć moją aplikację Accessową przed SQL Incjetion? Generalnie znalazłem rozwiązanie, które pozwala na ochronę konkretnego pola w formularzu. Tylko pól w formularzu mam bardzo dużo. Da się jakoś globalnie zabezpieczyć formularz przed taką akcją, czy każde z pól muszę odrębnie zabezpieczyć? Poniżej wklejam przykład, na którym testowałem pojedyncze pole.

Private Sub przycisk_Click()
imie = imie.Value
nazwisko = nazwisko.Value
imie = Replace(imie, "'", "''")

sqlStr = "INSERT INTO test (imie, nazwisko) VALUES ('" & imie & "', '" & nazwisko & "')"
DoCmd.RunSQL (sqlStr)

End Sub

0

Szukaj informacji pod kątem parametrized sql query, np.: https://www.vitoshacademy.com/vba-using-parameters-in-a-vba-sql-query-to-a-database/

4

Jeżeli działasz na accdb to używaj obiektów DAO, w Twoim przypadku tak:

Dim db As DAO.database
Dim qdf As DAO.QueryDef
Dim strInsert As String

strInsert = "INSERT INTO test (imie, nazwisko) VALUES ([imie], [nazwisko]);"
Set db = CurrentDb
Set qdf = db.CreateQueryDef("", strInsert)
qdf.Parameters("[imie]").value = imie.Value
qdf.Parameters("[nazwisko]").value = nazwisko.Value
qdf.Execute dbFailOnError
Set qdf = Nothing
Set db = Nothing

1 użytkowników online, w tym zalogowanych: 0, gości: 1