在我的控制器操作中,我有以下内容:
def index
@articles = (params[:mine] == "true") ? current_user.articles : Article.search(params[:search])
@articles = @articles.sort! { |a,b| b.created_at <=> a.created_at }
@articles = Kaminari.paginate_array(@articles).page(params[:page]).per(25)
respond_to do |format|
format.html
format.json { render json: @articles }
end
end
在模型中:
def self.search(search)
if search.present?
where("category LIKE ? OR article_type LIKE ?", "%#{search}%","%#{search}%")
else
find(:all)
end
end
我知道如果您直接在查询中使用参数,则可以进行 SQL 注入。在这里,我将参数直接传递给 where 查询Article.search(params[:search])
。这容易发生SQL注入吗?如果是,我怎样才能使它更安全?我也怀疑我是否正确编写了控制器代码。如果您对重构控制器代码有任何建议,请告诉我,我们将不胜感激。非常感谢!