Mysql 这个RubyonRails代码易受SQL注入攻击吗?

Mysql 这个RubyonRails代码易受SQL注入攻击吗?,mysql,ruby-on-rails,sql-injection,Mysql,Ruby On Rails,Sql Injection,谢谢你的帮助。我不熟悉使用Rails 2的Rails,我知道这并不理想,但对项目来说是必要的。我有一个表格,有几个输入。我想确保我正在保护我的用户不受SQL注入的影响。我想我处理得很好,但我只是想确定一下,尤其是在输入方面 shoots.html.erb具有保存到shoes and socks表的表单 鞋控制器 鞋模型 以上给定的代码受到SQL注入的保护。在ROR中可以进行注入,但通常在构建查询时直接在find by sql命令中使用变量时发生 例如: sq = "Select * from u

谢谢你的帮助。我不熟悉使用Rails 2的Rails,我知道这并不理想,但对项目来说是必要的。我有一个表格,有几个输入。我想确保我正在保护我的用户不受SQL注入的影响。我想我处理得很好,但我只是想确定一下,尤其是在输入方面

shoots.html.erb具有保存到shoes and socks表的表单

鞋控制器

鞋模型


以上给定的代码受到SQL注入的保护。在ROR中可以进行注入,但通常在构建查询时直接在find by sql命令中使用变量时发生

例如:

sq = "Select * from users where id = {params[:id]}"
res = User.find_by_sql(sql)
在上述情况下,可以通过在params[:id]中发送适当的语句来完成sql注入。上面相同的代码可以按如下方式编写,以防止注入

sq = "Select * from users where id = ?"
res = User.find_by_sql([sql,params[:id]])

以上编写的代码不受SQL注入的影响。

感谢您的审阅!还要注意传递给activerecord order方法的用户指定排序-请参阅
sq = "Select * from users where id = ?"
res = User.find_by_sql([sql,params[:id]])
sq = "Select * from users where id = {params[:id]}"
res = User.find_by_sql(sql)
sq = "Select * from users where id = ?"
res = User.find_by_sql([sql,params[:id]])