0
Set cmd = Server.CreateObject("ADODB.Command")
Set rsView = Server.CreateObject("ADODB.Recordset")
cmd.ActiveConnection = MM_connContent_STRING
cmd.Prepared = true
cmd.CommandType = adCmdText
cmd.CommandText = SQL
cmd.CommandTimeout = 60
cmd.Parameters.Append(cmd.CreateParameter("Category", 202, adParamInput, 30, qFilter))
cmd.Parameters.Append(cmd.CreateParameter("SubDate", 202, adParamInput, 10, myDateSort))
rsView.CursorLocation = adUseClient
rsView.Open cmd, , adOpenForwardOnly, adLockReadOnly
위의 코드는 하나를 제외하고 잘 작동
거대한 문제. "ORDER BY SubDate?" 부분 출력 "ORDER BY SubDate 'DESC'"DESC가 주변에 작은 따옴표가있는 경우 매개 변수이므로 추가됩니다. 위의 코드를 실행하면 잘못된 구문 오류가 발생합니다. 이는 DESC (사용자가 URL 쿼리 문자열을 통해 선택한 내용에 따라 ASC가 될 수도 있음) 주변의 작은 따옴표로 인해 발생합니다. 모든 SQL 매개 변수는 작은 따옴표로 출력됩니다. 특정 SQL 매개 변수에서 작은 따옴표를 제거하여 SQL 문자열에 구문 오류를 만들지 않으려면 어떻게합니까?
+1 니스 실용 아직 보안 솔루션, 내 투표를 가져옵니다. – AnthonyWJones
빠른 답장을 보내 주셔서 감사합니다. 매개 변수화 된 쿼리로 이동하여 SQL 주입을 피하려고합니다. myDateSort는 URL 문자열을 통해 전달되는 사용자 정의 변수이므로 코드에 표시된대로 매개 변수 외부에서 myDateSort 변수를 직접 사용하면 사용자가 여전히 내 SQL 쿼리를 수정할 수 있다고 생각합니다. 이 올바른지? 다시 한 번 감사드립니다! – user1531027
사실, 이제는 If 함수를 사용하여 myDateSort에 할당 된 값을 제어하고 있습니다. 나는 이것이 그 가치를 안전하게 지킬 것이라고 생각한다. – user1531027