Czy jest to podatne na wstrzykiwanie SQL?
W mojej akcji kontrolera mam następujące:
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
A w modelu:
def self.search(search)
if search.present?
where("category LIKE ? OR article_type LIKE ?", "%#{search}%","%#{search}%")
else
find(:all)
end
end
Rozumiem, że wstrzyknięcie SQL byłoby możliwe, jeśli użyjesz parametrów bezpośrednio w zapytaniu. Tutaj przekazuję parametry bezpośrednio do zapytania przezArticle.search(params[:search])
. Czy jest to podatne na wstrzykiwanie SQL? Jeśli tak, jak mogę uczynić go bardziej bezpiecznym? Mam również wątpliwości, czy poprawnie napisałem kod kontrolera. Jeśli masz sugestie dotyczące zmiany kodu kontrolera, daj mi znać, a oni będą bardzo wdzięczni. Wielkie dzięki!