ModelName.new防止SQL注入嗎?rails是從sql注入的Model.new安全嗎?
例子:
@user = User.new(params[:user])
@user.save
我讀過的rails security doc S和沒有看到有關通過Model.new插入任何東西。
謝謝!
ModelName.new防止SQL注入嗎?rails是從sql注入的Model.new安全嗎?
例子:
@user = User.new(params[:user])
@user.save
我讀過的rails security doc S和沒有看到有關通過Model.new插入任何東西。
謝謝!
Model.new
與SQL注入無關,因爲它不是寫入數據庫的方法。
這是實際寫入數據庫並負責SQL注入的Model.save
。
yes
它防止SQL注入,是安全的,PARAMS [:用戶]是HASH
你可以follwing例如檢查一下我assumr你params中得到一些無效值[:用戶] [:名字]
@user= User.new(params[:user])
@user.save
和
@user= User.new()
@user.name=params[:user][:name] #your application may crash here or this is not sql injection safe
@user.save
爲了避免這種情況,你可以使用哈希
@user= User.new({:name=>params[:user][:name]})
@user.save
閱讀this後,我來conlcusion既不。新& .save從SQL注入安全
Edited
的質量分配功能可能會成爲一個問題,因爲它允許攻擊者設置任何型號的通過操縱傳遞到一個模型的new()方法的散列屬性:
請閱讀6 Mass Assignment
爲它的問題,併爲6.1 Countermeasures
溶液
你能解釋爲什麼前者比後者更安全嗎?謝謝。 – 2010-07-07 11:25:57
謝謝!有沒有任何軌道文件解釋這一點?我知道安全文檔討論查找,但不是關於創建/保存。 – djburdick 2010-07-07 18:01:04
查看http://guides.rubyonrails.org/security.html#mass-assignment。你所說的完全與Rails安全性文檔所說的完全相反。 – 2010-07-07 20:41:54
你的意思是,如果我單獨賦值,然後使用'Model.save',它將處理SQL注入。如果是的話,你錯了' – Salil 2010-07-07 09:39:42
看看這個http://stackoverflow.com/questions/2144778/sql-injection-prevention-for-create-method-in-rails-controller。和http://guides.rubyonrails.org/security.html#mass-assignment。 – 2010-07-07 10:45:00
@NM - 所以任何.save總是安全的注射?既然你不能用.save做原始的SQL?另外,大規模任務與此無關。 – djburdick 2010-07-07 17:57:34