2014-12-23 19 views
0

我正在使用ActiveRecord和Sinatra(可能不相關的上下文)。 ActiveRecord有一個動態查找方法find_by_[column]find_by_ [dynamic] Activerecord方法對於未分類輸入是否安全?

我想從HTTP直接傳遞一個原始參數字符串到這些方法之一。我很確定 ActiveRecord會清理我傳入的字符串。對吧?下面是一些示例代碼來說明我想做的事:

post '/login' do 
    user = User.find_by_username(params[:username]) 
    ... 
end 

它是有問題的傳遞unsanitized HTTP參數到這種方法的ActiveRecord的?

更普遍的是,應該如何確定哪些ActiveRecord方法可以淨化其輸入?我一直在閱讀這個網站,並感到害怕!

if User.exists? :username => params[:username] 
user = User.find_by_username(params[:username]) 
end 

這大大降低SQLI的機會:http://rails-sqli.org/

回答

1

是的,它們是安全的。因爲動態查找器可以簡單地轉換爲常規哈希表。在github

的實現請注意,新語法(自版本4起)是:find_by(username: params[:username])

0

要該用戶是否存在,你可以嘗試這樣是肯定的。

相關問題