我使用以下技术确保来自客户端的任何排序列参数都通过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()函数之前确保这是真的!
答案 0 :(得分:5)
当然,那是安全的。您正在对订单进行硬编码,因此无法注入无关的SQL。