MS Access - uniknięcie SQL injection.

MS Access - uniknięcie SQL injection.
Tomasz Papryka
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Medelin
  • Postów: 100
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.

Kopiuj
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

Patryk27
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
  • Postów: 13042
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/

PA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3891
4

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

Kopiuj
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

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.