2011-04-12 46 views
1

我有複雜的SQL查詢。我需要安全地將參數傳遞給SQL查詢。如何避免sql注入而不使用activerecord?我應該在哪裏保留SQL模型/控制器?有沒有人知道不使用主動記錄的SQL服務器的良好做法?Ruby On Rails,SQL和SQL參數

回答

0

當你繞過ActiveRecord你幾乎不得不手動做所有事情。我假設你有充分的理由這樣做。

ActiveRecord::Base有以下方法:sanitize_sql_for_assignments(用於設置)和sanitize_sql_for_conditions(用於select)。還有一些其他的sanitize_sql_ *可能也值得一看。兩者都接受一個散列(使用鍵作爲列名)或一個字符串。

我可能會錯,但爲了抓取記錄並跳過ActiveRecord,我認爲您使用了ActiveRecord :: Base.connection.execute(sql),它應該從數據庫連接器返回對象。檢查連接器的文檔以查看返回的內容以及如何使用它。

至於最佳做法,抱歉,我無法幫到你:-)

0

ActiveRecord具有sanitize_sql功能。 你可以檢查這個方法的source code