2015-10-07 57 views
2

我是Coldfusion的新手,我之前的背景是在PHP中使用codeIgniter。我目前正在使用CFWheels進行一個項目。CFWheels ORM和SQL注入

我有一個INSERT語句

n_building = model("buildings").new(); 
n_building.name = name; 
n_building.save(); 

而且閱讀聲明

room = model("rooms").findOne(where="name='#name#' AND b_id='#b_id#'"); 

是上述最佳實踐或者可以將其在安全性方面寫越好。

問題是,使用ORM會自動保護SQL注入或任何其他形式的注入或安全風險的查詢嗎?我是否必須使用別的東西,如果有的話,我如何修改上述語句?

+0

查看動態查找器http://docs.cfwheels.org/docs/dynamic-finders –

回答

1

默認情況下,CfWheels使用cfqueryparam,除非您使用參數參數並將其設置爲false。所以你不必擔心Sql注入。

閱讀findAll method description中的參數化參數。

通過使用動態查找器,您的代碼可以按照John Whish的建議變得更好。

+0

乾淨的答案!我有一個問題:CFWheels做了什麼,如果我們在模型語句的'group'屬性中也有'Having'子句?它是否會參數化having子句?例如: room = model(「rooms」)。findAll(select =「count(id)」,where =「name ='#name#'AND b_id ='#b_id#'」,group =「room_type計數(id)> 0「); 這只是一個簡單的例子,但你明白了。 – Anurag

1

就我所知,cfwheels ORM將參數化由ORM構建的查詢。 它將在Statement中插入<cfqueryparam>。 但是,您可以啓用調試並輕鬆查看發送到數據庫的查詢。

+0

這是正確的。 CFWheels將解析你的'where'值並將參數化傳入的值。 –