防止SQL注入/良好的Ruby方法

防止SQL注入/良好的Ruby方法,ruby,sql-injection,Ruby,Sql Injection,Ruby中防止SQL注入的好方法是什么?不仅仅在Ruby中-绑定您的参数(无论是在数据库中,还是在客户端代码中)。查看他们提供的指南: 基本上,您希望在模型中使用绑定变量来查找数据,而不是内联参数 Model.find(:first, :conditions => ["login = ? AND password = ?", entered_user_name, entered_password]) 在直接的红宝石?使用事先准备好的陈述: require 'mysql' db = Mys

Ruby中防止SQL注入的好方法是什么?

不仅仅在Ruby中-绑定您的参数(无论是在数据库中,还是在客户端代码中)。

查看他们提供的指南:

基本上,您希望在模型中使用绑定变量来查找数据,而不是内联参数

Model.find(:first, :conditions => ["login = ? AND password = ?", entered_user_name, entered_password])

在直接的红宝石?使用事先准备好的陈述:

require 'mysql'
db = Mysql.new('localhost', 'user', 'password', 'database')
statement = db.prepare "SELECT * FROM table WHERE field = ?"
statement.execute 'value'
statement.fetch
statement.close
根据,您可以通过插入

<%= csrf_meta_tags %>

app/views/layouts/application.html.erb标题中的标记


此线程引用:

ActiveRecord的find()方法内置了避免SQL注入的方法 使用格式

 >  :conditions => [ "user_name = ?", user_name]
是否有任何这样的系统来保证注射的顺利进行?似乎 仅获取一个字符串并将其馈送到SQL语句。这导致了一场灾难 使用params设置以下函数中的顺序时存在漏洞:

     def list
sort_by = params[:sort_by]
@book_pages, @books = paginate :books,
                               :order => sort_by,
                               :per_page => 10
    end
我们尝试了一些方法来清理sort_,例如order=>['?', sort_by],但它只是将其像一个平铺函数一样传递给SQL语句 数组。“逃脱魔法”不符合秩序。我应该用吗
gsub!要清理params[:sort_by]?

哦,任何人推荐的,我都会选。我对投票结果有点惊讶,但如果你提到你是在使用web框架还是使用普通的旧ruby对象,这可能会有所帮助。是的,但是我的ruby=ruby。因此,它应该意味着直接的红宝石。另外,任何人都可以点击我的个人资料,看看我是否提出了其他rails问题,我没有。是的,这看起来不错。这和我在Java中的习惯差不多,谢谢。你至少应该提到你正在谈论的是active record。我正要对此发表评论。。匆忙中,我忘了读到它不是专门针对Rails/ActiveRecord的。。对不起!我的问题是,它返回一个结果数组,而不是一个字段或更易于管理的内容……这只是一个如何为select查询使用准备好的语句的示例。如何处理结果取决于您自己。对于那些使用web框架的人来说是个好主意,但是SQL Injection!=XSS