¿Es esto propenso a la inyección de SQL?
En mi acción de controlador, tengo lo siguiente:
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
Y en el modelo:
def self.search(search)
if search.present?
where("category LIKE ? OR article_type LIKE ?", "%#{search}%","%#{search}%")
else
find(:all)
end
end
Entiendo que la inyección de SQL sería posible si utiliza parámetros directamente en una consulta. Aquí, estoy pasando parámetros directamente a la consulta dondeArticle.search(params[:search])
. ¿Es esto propenso a la inyección de SQL? Si es así, ¿cómo puedo hacerlo más seguro? También tengo mis dudas si he escrito el código del controlador correctamente. Si tiene sugerencias para refactorizar el código del controlador, hágamelo saber y serán muy apreciados. ¡Muchas gracias!