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

Moh*_*mad 2 coldfusion sql-injection

我使用以下技术来确保来自客户端的任何排序列参数都通过ListFindNoCase()函数:

<cfif ListFindNoCase("date,score", params.order) EQ 0>
   <cfset params.order = "date">
</cfif>
Run Code Online (Sandbox Code Playgroud)

这样,任何排序列请求在发送到服务器之前都会对列表值进行审查.然后我将以下代码添加到我的函数中:

<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>
Run Code Online (Sandbox Code Playgroud)

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

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

小智 5

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