CFSWITCH可以在用于排序列时阻止SQL注入吗?

时间:2010-12-18 17:32:45

标签: coldfusion sql-injection

我使用以下技术确保来自客户端的任何排序列参数都通过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>

如果表达式与前两种情况不匹配,默认情况下总是将顺序设置为“date DESC”,那么这不会使ListCaseNoFind()变为冗余吗?

我想在删除ListFindNoCase()函数之前确保这是真的!

1 个答案:

答案 0 :(得分:5)

当然,那是安全的。您正在对订单进行硬编码,因此无法注入无关的SQL。