2012-03-21 2 views
0

나는 콤보 상자의 afterupdate 이벤트에서 폼의 레코드 소스를 변경하고있는 MS ACCESS를 사용하고 있습니다. 여기이 SQL 문에 문제가 있습니까?

Me.RecordSource = "SELECT * FROM qryMIMATRIX WHERE qryMIMATRIX.A_LOCATION = " & Me.cboLocate.Value & ";" 

cboLocate 사용되는 SQL 쿼리는 콤보 상자의 이름입니다 및 qryMIMATRIX 쿼리의 이름입니다. 내가 나를 desirable.Help되지 않는 매개 변수를 입력하라는 메시지가 오전의 대한 AfterUpdate 이벤트에 .. a_loaction 필드는 따옴표로 값을 포장 할 필요가 문자열 유형 인 경우

+0

아래의 SQL 삽입 주석에 대해서는 매우 심각합니다. 질의 응답으로 심각한 보안 문제가 발생할 수 있습니다. 기본적으로 콤보 상자를 사용하면 목록에서 선택하지 않고 수동으로 텍스트를 입력 할 수 있습니다. 이것은 누군가가 같은 것을 입력 할 수 있다는 것을 의미합니다 .... somevalue; DROP TABLE blah blah .... –

+0

콤보의 "Limit To List"속성을 Yes로 설정하면 RecordSource SQL 문에 삽입되는 것을 방지 할 수 있습니다. 그러나 Access의 db 엔진은 하나의 명령문 만 처리하기 때문에 DROP TABLE 유형의 주입 공격에 취약하지 않습니다 ... 세미콜론으로 2 개의 명령문을 결합 할 수 없으며 엔진이 두 가지를 모두 수행 할 것으로 기대합니다. – HansUp

답변

1

:

"SELECT * FROM qryMIMATRIX WHERE qryMIMATRIX.A_LOCATION = '" & Me.cboLocate.Value & "'"

+0

정말 빠른 시간 내에 답변을 얻었습니다. 감사합니다. 빠른 정보를 얻을 수 있기를 바랍니다. – user1175126

+0

이 하나가 작동하지 않는 것처럼 보입니다. 동일한 로직을 사용했습니다. "qryMIMATRIX WHERE qryMIMATRIX.A_LOCATION =" "& Me.cboLocate.Value &" 'AND qryMIMATRIX.A_PRIORITY =' "& Me.cboPrior. 값 및 " '"A_PRIORITY는 1에서 5까지의 정수입니다. – user1175126

1

은 무엇이야 쿼리에 문제가 있습니다 ...

  1. SQL 인젝션을 읽으십시오. 지금 당장 기다려 드리겠습니다.
    ...
    ...
  2. 선택하지 마십시오 * ..... 좋지 않은 방법으로 열을 지정하십시오.
  3. 아마 콤보 상자의 값을 인용해야합니다.
+0

죄송합니다. 무식하지만 SQL injection은 무엇에 관한 것입니까? 이것에 대해 Google에 대해 알아야 할 것 같습니다. 확인해 드리겠습니다. 지금은 생각합니다. LimitToList 속성을 Yes로 사용하면 괜찮습니까? – user1175126

+1

네, 그걸 읽어야합니다, 중요합니다. 또한 수정하기도 쉽습니다. 그것에 대해 논의하는 기사는 수 백 (아마 1000 가지)입니다. 여기가 좋은 것입니다. http://weblogs.asp.net/scottgu/archive/2006/09/30/Tip_2F00_Trick_3A00_-Guard-Against-SQL-Injection-Attacks.aspx –

+0

고맙습니다. 확인하겠습니다.하지만 내 검색어는 어떻게됩니까? – user1175126

관련 문제