SQL Injection(SQL 注入***)

One of the most common security problems for dynamic sites is SQL Injection. Thankfully Rails does everything it can in solving this issue, but you still need to be aware of it.
 
一个最常见的动态网站安全性问题就是SQL注入***。Rails可以解决,但是仍然需要意识到这个问题。
 
首先看一下params,session, cookie这三个hash参数,关于介绍这三者的 一篇文章
得出结论:不要相信params, cookie,可以相信session
def index  
  @tasks = Task.find(:all, :conditions => "name LIKE '%#{params[:query]}%'")  
end 
 
这是在index页面上有一个查询框,提交之后返回params[:query]参数。这个参数直接放到conditions条件里面就会生成SQL语句。如果给params[:query]赋值里面加个'不成对,直接翻译成SQL语句,就会使得SQL语句执行出现错误,从而导致rails错误发生。
 
所以,这个conditions里面应该这么写:
def index  
  @tasks = Task.find(:all, :conditions => ["name LIKE ?", '%' + params[:query] + '%'])  
end