我主要使用CFQUERYPARAM
來防止SQL注入。由於查詢查詢(QoQ)不會觸及數據庫,因此在它們中使用CFQUERYPARAM是否有任何邏輯原因?我知道與cfsqltype
和maxlength
不匹配的值將會引發異常,但是應該在這之前驗證這些值並顯示友好的消息(從UX視角)。查詢查詢中是否有任何合乎邏輯的理由使用CFQUERYPARAM?
6
A
回答
6
在我看來,這是一個更簡單的情況。
<cfquery name="NoVisit" dbtype="query">
select chart_no, patient_name, treatment_date, pr, BillingCompareField
from BillingData
where BillingCompareField not in
(<cfqueryparam cfsqltype="cf_sql_varchar"
value="#ValueList(FinalData.FinalCompareField)#" list="yes">)
</cfquery>
另一種方法是使用QuotedValueList。但是,如果該值列表中的任何內容包含撇號,則cfqueryparam將會將其轉義。否則,我將不得不。
編輯從這裏開始
下面是另一個例子,其中不使用查詢參數會導致錯誤。
QueryAddRow(x,2);
QuerySetCell(x,"dt",CreateDate(2001,1,1),1);
QuerySetCell(x,"dt",CreateDate(2001,1,11),2);
</cfscript>
<cfquery name="y" dbtype="query">
select * from x
<!---
where dt in (<cfqueryparam cfsqltype="cf_sql_date" value="#ValueList(x.dt)#" list="yes">)
--->
where dt in (#ValueList(x.dt)#)
</cfquery>
作爲寫入的代碼引發此錯誤:
Query Of Queries runtime error.
Comparison exception while executing IN.
Unsupported Type Comparison Exception:
The IN operator does not support comparison between the following types:
Left hand side expression type = "DATE".
Right hand side expression type = "LONG".
與查詢參數,上述註釋,代碼執行成功。
8
由於查詢查詢(QoQ)不會觸及數據庫,因此在它們中使用CFQUERYPARAM是否有任何邏輯原因?實際上,它確實會觸及數據庫,即您當前已經存儲在內存中的數據庫。該數據庫中的數據理論上仍然可能通過用戶的某種注入而被篡改。這會影響你的物理數據庫 - 不。這是否會影響應用程序中數據的使用 - 是的。
你沒有提供任何具體的細節,但我會在謹慎的一面犯錯。如果ANY您用來構建查詢的數據來自客戶端,那麼在其中使用cfqueryparam
。如果你可以保證你的查詢中沒有任何元素來自客戶端,那麼我認爲不使用cfqueryparam
就可以。
另外,使用cfqueryparam
也有助於優化數據庫的查詢,儘管我不確定查詢的查詢是否爲真。它也爲你撇開字符,如撇號。
相關問題
- 1. 基於查詢字符串設置Page.Theme是否合乎邏輯?
- 2. Mysql組合查詢邏輯
- 3. 是否有合乎邏輯的理由在where子句中使用1 = 1?
- 4. 邏輯查詢
- 5. 使用cfqueryparam用ColdFusion的HQL查詢
- 6. SQL查詢邏輯
- 7. SQL查詢邏輯順序由
- 8. 處理MDX查詢的邏輯順序
- 9. 此查詢是否使用任何子查詢或臨時表?
- 10. 可重複使用的邏輯查詢
- 11. 全文索引查詢 - 不合邏輯
- 12. 複雜的查詢邏輯
- 13. MySQL的查詢邏輯
- 14. Prolog的邏輯查詢
- 15. 查詢邏輯與程序邏輯
- 16. 這個查詢是否有任何修改查詢:
- 17. 查詢的邏輯是什麼?
- 18. LINQ C#查詢的邏輯是什麼?
- 19. MySQL Like查詢邏輯
- 20. nhibernate查詢邏輯測試
- 21. PHP編程邏輯查詢
- 22. SQL查詢邏輯2
- 23. MySQL查詢分組邏輯
- 24. 查詢重寫邏輯
- 25. 媒體查詢邏輯
- 26. Dynamoose + DynamoDB查詢邏輯
- 27. 查詢包含邏輯
- 28. 邏輯查詢計算周
- 29. SQL UPDATE查詢邏輯
- 30. MySQL查詢邏輯幫助
我會問你想通過不使用它獲得什麼? –