2010-12-18 34 views
2

我用下面的技術,以確保任何排序列PARAMS來自客戶端經過ListFindNoCase()函數:當用於排序列時,CFSWITCH可以防止SQL注入嗎?

<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

這也被認爲是「白名單」,這是安全的。 – 2010-12-18 18:26:55