我正在使用CFLoop
構建一個動態的SQL查詢。 我正在使用CFSaveContent
遍歷變量並構建查詢,然後我使用PreserveSingleQuotes
在CFQuery
中執行它。 這工作正常,但這種方法的問題是,我不能使用CFQueryParam
,所以我的查詢是脆弱的注射。 是否想知道這個問題是否有解決方法?PreserveSingleQuotes和CFQueryParam
更新:
<cfsavecontent variable="sqlstring">
SELECT id
,(CASE
<cfloop query="qGetRules">
WHEN val1 >=#qGetRules.equ# AND val2 >#arguments.leve# THEN 1
</cfloop>
ELSE 0
END) AS criteria
FROM mt4_users
</cfsavecontent>
<cfquery name="qGetEquity" datasource="mydatasource">
#PreserveSingleQuotes(variables.sqlstring)#
</cfquery>
所以在這個例子中,你可以看到我不能使用cfqueryparam
爲arguments.leve
,因爲它會在PreserveSingleQuotes
您是否查看了[cffs和cfqueryparam]的[cfscript等價物](https://helpx.adobe.com/coldfusion/cfml-reference/script-functions-implemented-as-cfcs/query)上的文檔。 HTML)? – Leigh
理論上,我們所有人一直都在驗證用戶提供的所有字段。單獨依靠查詢參數來確保安全性並不像您所能做到的那樣安全。此外,PreserveSingleQuotes有它的位置,但我從來沒有成功處理撇號。 –
由於這是一個移動web服務,我無法驗證用戶的輸入(在移動應用程序旁邊)。如果有人嗅探URL並嘗試注入SQL,我需要停止它。 – BlackM