這個查詢工作,但就是SQL注入完全開放:Rails的ActiveRecord的逃避變量中加入條款
products = Product.find(pids,
:select => 'products.*, P.code',
:joins => "left join product_dist_match P on
(P.pid = products.pid and P.cid = #{cid})",
)
我怎樣才能正確地逃脫CID變量? conditions
參數允許用於此目的的格式['foo = ?', bar]
,但joins
不允許。
我不想使用find_by_sql
,因爲那時我需要添加屬於模型默認範圍(不會幹的)的部分的連接和條件。
編輯:我的表結構基本上是這樣的:
products: pid (primary key)
product_dist_match: pid, cid, code
customers (not used in the query): cid (primary key)
注意,這是一個只讀數據庫,導軌和只有有限參與。我不打算爲所有表格建立模型;我只想做一個如上所述的簡單查詢,而不會將自己暴露給SQL注入攻擊。
你能描述一下你的表結構嗎?這可能是通過使用哈希條件 – davidrac 2012-08-06 16:00:26