문제

저는 최근 다소 불쾌한 SQL 주입 공격의 대상이 된 여러 ColdFusion 사이트를 조사하는 임무를 받았습니다.기본적으로 내 작업에는 추가 작업이 포함됩니다. <cfqueryparam> 모든 인라인 SQL에 태그를 추가합니다.대부분의 내용은 다 알고 있지만 LIKE 연산자와 함께 cfqueryparam을 사용하는 방법을 알려주실 수 있는 분 계십니까?

내 쿼리가 다음과 같은 경우:

select * from Foo where name like '%Bob%'

나는 무엇을해야합니까? <cfqueryparam> 태그는 어떻게 생겼나요?

도움이 되었습니까?

해결책

@Joel, 동의하지 않습니다.

select a,b,c
from Foo
where name like <cfqueryparam cfsqltype="columnType" value="%#variables.someName#%" />
  1. 누군가에게 "스타를 선택해야한다"고 제안하지 마십시오. 나쁜 형태!예를 들어도!(심지어 질문에서 복사되었습니다!)

  2. 쿼리는 미리 컴파일되어 있으므로 쿼리에 전달되는 매개 변수의 일부로 와일드카드 문자를 포함해야 합니다.이 형식은 더 읽기 쉽고 더 효율적으로 실행됩니다.

  3. 문자열 연결을 수행할 때는 더하기 기호가 아닌 앰퍼샌드 연산자(&)를 사용하십시오.기술적으로 대부분의 경우 plus는 잘 작동합니다.문자열 중간에 NumberFormat()을 던지고 확인했는데 유효한 숫자를 전달하지 않는다는 메시지가 왜 나오는지 궁금해지기 시작할 때까지 말입니다.

다른 팁

select a,b,c
from  Foo
where name like  <cfqueryparam cfsqltype="cf_sql_varchar" value="%Bob%" />;
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top