수색…


소개

매개 변수화 된 쿼리를 사용하여 SQL 주입 공격을 방어 할 수 있습니다.

취약한 접근법 : 폼 참조로 연결된 SQL 문자열

이는 초보 개발자가 SQL 액션 쿼리를 작성하는 일반적인 방법입니다. 그들은 Bobby Tables 유형의 SQL Injection 공격에 취약합니다.

Dim strSQL As String

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

CurrentDb.Execute strSQL

QueryDef 매개 변수화 된 쿼리 접근법

이 접근 방식은 사용자가 두 번째 SQL 문을 입력에 삽입하여 실행하지 못하게합니다.

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

유효한 매개 변수 유형 :

  • DATETIME : 날짜 (매개 변수는 VBA Date 예상 함)
  • SHORT , LONG : 정수의 경우 ( SHORT 는 Integer를 예상하고 LONG Long을 예상 함)
  • SINGLE , DOUBLE : 부동 소수점의 경우 (각각 단일 및 이중을 예상 함)
  • VARCHAR 또는 TEXT : 문자열의 경우
  • MEMO 또는 LONGTEXT : 255 자 이상의 문자열 인 경우


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow