ms-access
매개 변수가있는 쿼리
수색…
소개
매개 변수화 된 쿼리를 사용하여 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: 날짜 (매개 변수는 VBADate예상 함) -
SHORT,LONG: 정수의 경우 (SHORT는 Integer를 예상하고LONGLong을 예상 함) -
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