2010-12-18 2 views
2

정렬 열에 CFSWITCH를 사용하면 SQL 주입을 방지 할 수 있습니까?

다음 기술을 사용하여 클라이언트에서 오는 정렬 열 매개 변수가 ListFindNoCase() 함수를 통과하는지 확인합니다.

<cfif ListFindNoCase("date,score", params.order) EQ 0> 
    <cfset params.order = "date"> 
</cfif> 

이렇게하면 모든 정렬 열 요청이 목록 값에 대해 섬기는 사람. 그런 다음 함수에 다음 코드를 추가했습니다.

<cfswitch expression="#params.order#"> 
    <cfcase value="date"> 
     <cfset params.order = "date DESC"> 
    </cfcase> 
    <cfcase value="score"> 
     <cfset params.order = "score ASC"> 
    </cfcase> 
    <cfdefaultcase> 
     <cfset params.order = "date DESC"> 
    </cfdefaultcase> 
</cfswitch> 

표현식이 처음 두 사례와 일치하지 않으면 기본 사례가 항상 "날짜 DESC"로 설정되므로 ListCaseNoFind()가 중복되지 않습니까?

ListFindNoCase() 함수를 제거하기 전에 이것이 사실인지 확인하고 싶었습니다!

답변

5

물론 안전합니다. 당신은 명령을 하드 코딩하고 있기 때문에 관계없는 SQL을 삽입 할 가능성은 없습니다.

+1

이것은 또한 "white-listing"으로 간주되어 안전합니다. –

관련 문제