不導軌自動防止做類似的漏洞:Rails - 這是安全的嗎?採用URL參數來查詢數據庫?
由於使用網址:http://a.com/?id=3131313131313
然後在軌道控制器
@comment = Comment.find(params[:id])
不Rails的自動保護的是,或做我需要做的一些類型的驗證,以保護應用程序免受黑客攻擊?
感謝
不導軌自動防止做類似的漏洞:Rails - 這是安全的嗎?採用URL參數來查詢數據庫?
由於使用網址:http://a.com/?id=3131313131313
然後在軌道控制器
@comment = Comment.find(params[:id])
不Rails的自動保護的是,或做我需要做的一些類型的驗證,以保護應用程序免受黑客攻擊?
感謝
ActiveRecord的發現總是會使用.to_i
防止所有的SQL注入魔力。
的Rails也會自動逃逸的東西,在查詢這樣的:
Comment.where(["id = ?", params[:id]])
但不在
Comment.where("id = #{params[:id]}")
是。如果你擔心sql注入,它會採取你的參數和消毒。但更好的方法是使用像http://a.com/31343231
這樣的網址。製作起來相當簡單,但看起來更好
它是否也會清理動態查找助手,如'find_by_name(params [:id])'還是更好地執行where語句? – iwasrobbed 2011-04-18 20:53:03
是的,它也會消毒它 – fl00r 2011-04-18 20:55:25
@ fl00r在url中查詢數據庫是否安全?使用查詢字符串 – blackHawk 2016-12-11 07:47:20
所以我應該讓我所有的問題像你一樣? Comment.where([「id =?」,params [:id]]) 或者我現在在q好嗎? – AnApprentice 2011-02-28 01:34:08
@AnApprentice:你使用的'find'沒問題。但是(這是一個很大但是),當你使用字符串插值('「id =」「)構建小塊SQL時,總是使用佔位符格式('[」id =?「,params [:id] #{params [:id]}「')讓你開放SQL注入,除非你已經仔細驗證了所有的東西,甚至你仍然應該使用佔位符來驗證你的代碼。 – 2011-02-28 02:47:59