fix: sql attack
This commit is contained in:
		
							parent
							
								
									880f09a94a
								
							
						
					
					
						commit
						09dfd504c2
					
				| 
						 | 
				
			
			@ -2,8 +2,8 @@ class Admins::FaqsController < Admins::BaseController
 | 
			
		|||
  before_action :find_faq, only: [:edit,:update, :destroy]
 | 
			
		||||
 | 
			
		||||
  def index
 | 
			
		||||
    sort_by = params[:sort_by] ||= 'updated_at'
 | 
			
		||||
    sort_direction = params[:sort_direction] ||= 'desc'
 | 
			
		||||
    sort_by = Faq.column_names.include?(params[:sort_by]) ? params[:sort_by] : 'updated_at'
 | 
			
		||||
    sort_direction = %w(desc asc).include?(params[:sort_direction]) ? params[:sort_direction] : 'desc'
 | 
			
		||||
 | 
			
		||||
    keyword = params[:keyword].to_s.strip
 | 
			
		||||
    collection = Faq.search_question(keyword).order("#{sort_by} #{sort_direction}")
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -3,8 +3,8 @@ class Admins::ProjectCategoriesController < Admins::BaseController
 | 
			
		|||
  before_action :validate_names, only: [:create, :update]
 | 
			
		||||
 | 
			
		||||
  def index 
 | 
			
		||||
    sort_by = params[:sort_by] ||= 'created_at'
 | 
			
		||||
    sort_direction = params[:sort_direction] ||= 'desc'
 | 
			
		||||
    sort_by = ProjectCategory.column_names.include?(params[:sort_by]) ? params[:sort_by] : 'created_at'
 | 
			
		||||
    sort_direction = %w(desc asc).include?(params[:sort_direction]) ? params[:sort_direction] : 'desc'
 | 
			
		||||
    q = ProjectCategory.ransack(name_cont: params[:name])
 | 
			
		||||
    project_categories = q.result(distinct: true).order("#{sort_by} #{sort_direction}")
 | 
			
		||||
    @project_categories = paginate(project_categories)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -3,8 +3,8 @@ class Admins::ProjectIgnoresController < Admins::BaseController
 | 
			
		|||
  before_action :validate_params, only: [:create, :update]
 | 
			
		||||
 | 
			
		||||
  def index
 | 
			
		||||
    sort_by = params[:sort_by] ||= 'created_at'
 | 
			
		||||
    sort_direction = params[:sort_direction] ||= 'desc'
 | 
			
		||||
    sort_by = Ignore.column_names.include?(params[:sort_by]) ? params[:sort_by] : 'created_at'
 | 
			
		||||
    sort_direction = %w(desc asc).include?(params[:sort_direction]) ? params[:sort_direction] : 'desc'
 | 
			
		||||
    q = Ignore.ransack(name_cont: params[:search])
 | 
			
		||||
    project_ignores = q.result(distinct: true).order("#{sort_by} #{sort_direction}")
 | 
			
		||||
    @project_ignores = paginate(project_ignores)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -3,8 +3,8 @@ class Admins::ProjectLanguagesController < Admins::BaseController
 | 
			
		|||
  before_action :validate_names, only: [:create, :update]
 | 
			
		||||
 | 
			
		||||
  def index 
 | 
			
		||||
    sort_by = params[:sort_by] ||= 'created_at'
 | 
			
		||||
    sort_direction = params[:sort_direction] ||= 'desc'
 | 
			
		||||
    sort_by = ProjectLanguage.column_names.include?(params[:sort_by]) ? params[:sort_by] : 'created_at'
 | 
			
		||||
    sort_direction = %w(desc asc).include?(params[:sort_direction]) ? params[:sort_direction] : 'desc'
 | 
			
		||||
    q = ProjectLanguage.ransack(name_cont: params[:search])
 | 
			
		||||
    project_languages = q.result(distinct: true).order("#{sort_by} #{sort_direction}")
 | 
			
		||||
    @project_languages = paginate(project_languages)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -3,8 +3,8 @@ class Admins::ProjectLicensesController < Admins::BaseController
 | 
			
		|||
  before_action :validate_params, only: [:create, :update]
 | 
			
		||||
 | 
			
		||||
  def index
 | 
			
		||||
    sort_by = params[:sort_by] ||= 'created_at'
 | 
			
		||||
    sort_direction = params[:sort_direction] ||= 'desc'
 | 
			
		||||
    sort_by = License.column_names.include?(params[:sort_by]) ? params[:sort_by] : 'created_at'
 | 
			
		||||
    sort_direction = %w(desc asc).include?(params[:sort_direction]) ? params[:sort_direction] : 'desc'
 | 
			
		||||
    q = License.ransack(name_cont: params[:search])
 | 
			
		||||
    project_licenses = q.result(distinct: true).order("#{sort_by} #{sort_direction}")
 | 
			
		||||
    @project_licenses = paginate(project_licenses)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,9 +1,8 @@
 | 
			
		|||
class Admins::ProjectsController < Admins::BaseController
 | 
			
		||||
 | 
			
		||||
  def index
 | 
			
		||||
    sort_by = params[:sort_by] ||= 'created_on'
 | 
			
		||||
    sort_direction = params[:sort_direction] ||= 'desc'
 | 
			
		||||
 | 
			
		||||
    sort_by = Project.column_names.include?(params[:sort_by]) ? params[:sort_by] : 'created_on'
 | 
			
		||||
    sort_direction = %w(desc asc).include?(params[:sort_direction]) ? params[:sort_direction] : 'desc'
 | 
			
		||||
    search = params[:search].to_s.strip
 | 
			
		||||
    projects = Project.where("name like ?", "%#{search}%").order("#{sort_by} #{sort_direction}")
 | 
			
		||||
    @projects = paginate projects.includes(:owner, :members, :issues, :versions, :attachments, :project_score)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -615,8 +615,8 @@ class ApplicationController < ActionController::Base
 | 
			
		|||
		end
 | 
			
		||||
 | 
			
		||||
		# 排序
 | 
			
		||||
		rorder = option[:order] || "updated_at"
 | 
			
		||||
		b_order = option[:b_order] || "desc"
 | 
			
		||||
		rorder = UserExtension.column_names.include?(option[:order]) ? option[:order] : "updated_at"
 | 
			
		||||
		b_order = %w(desc asc).include?(option[:b_order]) ? option[:b_order] : "desc"
 | 
			
		||||
		if rorder == "created_at" || rorder == "work_score"
 | 
			
		||||
			work_list = work_list.order("graduation_works.#{rorder} #{b_order}")
 | 
			
		||||
		elsif rorder == "student_id"
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -3,13 +3,12 @@ class ComposesController < ApplicationController
 | 
			
		|||
  before_action :find_compose, except: [:index, :new,:create]
 | 
			
		||||
 | 
			
		||||
  def index
 | 
			
		||||
    @order_type = params[:order] || "created_at"
 | 
			
		||||
    @search_name = params[:search]
 | 
			
		||||
    composes = Compose.compose_includes
 | 
			
		||||
    if @search_name.present?
 | 
			
		||||
      composes = composes.where("title like ?", "%#{@search_name}%")
 | 
			
		||||
    end
 | 
			
		||||
    composes = composes.order("#{@order_type} desc")
 | 
			
		||||
    composes = composes.order("#{order_type} desc")
 | 
			
		||||
    @page  = params[:page]  || 1
 | 
			
		||||
    @limit = params[:limit] || 15
 | 
			
		||||
    @composes_size = composes.size
 | 
			
		||||
| 
						 | 
				
			
			@ -96,4 +95,8 @@ class ComposesController < ApplicationController
 | 
			
		|||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def order_type 
 | 
			
		||||
    Compose.column_names.include?(params[:order_type]) ? params[:order_type] : 'created_at'
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
end
 | 
			
		||||
| 
						 | 
				
			
			@ -7,9 +7,6 @@ class IssueTagsController < ApplicationController
 | 
			
		|||
 | 
			
		||||
 | 
			
		||||
  def index
 | 
			
		||||
    order_name = params[:order_name] || "created_at"
 | 
			
		||||
    order_type = params[:order_type] || "desc"
 | 
			
		||||
 | 
			
		||||
    issue_tags = @project.issue_tags.order("#{order_name} #{order_type}")
 | 
			
		||||
    @user_admin_or_member = current_user.present? && (current_user.admin || @project.member?(current_user))
 | 
			
		||||
    @page  = params[:page]  || 1
 | 
			
		||||
| 
						 | 
				
			
			@ -138,4 +135,14 @@ class IssueTagsController < ApplicationController
 | 
			
		|||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  private 
 | 
			
		||||
 | 
			
		||||
  def order_name
 | 
			
		||||
    IssueTag.column_names.include?(params[:order_name]) ? params[:order_name] : 'created_at'
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def order_type 
 | 
			
		||||
    %w(desc asc).include?(params[:order_type]) ? params[:order_type] : 'desc'
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
end
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -88,11 +88,11 @@ class Organizations::OrganizationsController < Organizations::BaseController
 | 
			
		|||
  end
 | 
			
		||||
 | 
			
		||||
  def sort_by
 | 
			
		||||
    params.fetch(:sort_by, "created_at")
 | 
			
		||||
    OrganizationExtension.column_names.include?(params[:sort_by]) ? params[:sort_by] : 'created_at'
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def sort_direction
 | 
			
		||||
    params.fetch(:sort_direction, "desc")
 | 
			
		||||
    %w(desc asc).include?(params[:sort_direction]) ? params[:sort_direction] : 'desc'
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
end
 | 
			
		||||
| 
						 | 
				
			
			@ -36,10 +36,10 @@ class Organizations::ProjectsController < Organizations::BaseController
 | 
			
		|||
  end
 | 
			
		||||
 | 
			
		||||
  def sort
 | 
			
		||||
    params.fetch(:sort_by, "updated_on")
 | 
			
		||||
    Project.column_names.include?(params[:sort_by]) ? params[:sort_by] : 'updated_on'
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def sort_direction
 | 
			
		||||
    params.fetch(:sort_direction, "desc")
 | 
			
		||||
    %w(desc asc).include?(params[:sort_direction]) ? params[:sort_direction] : 'desc'
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
| 
						 | 
				
			
			@ -1,8 +1,8 @@
 | 
			
		|||
class Users::BanksController < Users::BaseController
 | 
			
		||||
  before_action :params_filter
 | 
			
		||||
  def index
 | 
			
		||||
    order = params[:order] || "updated_at"
 | 
			
		||||
    sort = params[:sort] || "desc"
 | 
			
		||||
    order = CourseList.column_names.include?(params[:order]) ? params[:order] : "updated_at"
 | 
			
		||||
    sort = %w(desc asc).includes?(params[:sort]) ? params[:sort] : "desc"
 | 
			
		||||
    @banks = @object_type.classify.constantize.where(@object_filter)
 | 
			
		||||
    @course_lists = CourseList.where(id: @banks.pluck(:course_list_id))
 | 
			
		||||
    @banks = @banks.where(course_list_id: params[:tag_id]) unless params[:tag_id].blank?
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -16,10 +16,10 @@ class Users::OrganizationsController < Users::BaseController
 | 
			
		|||
 | 
			
		||||
  private
 | 
			
		||||
  def sort_by
 | 
			
		||||
    params.fetch(:sort_by, "created_at")
 | 
			
		||||
    OrganizationExtension.column_names.include?(params[:sort_by]) ? params[:sort_by] : 'created_at' 
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def sort_direction
 | 
			
		||||
    params.fetch(:sort_direction, "desc")
 | 
			
		||||
    %w(desc asc).include?(params[:sort_direction]) ? params[:sort_direction] : 'desc'  
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
| 
						 | 
				
			
			@ -7,8 +7,6 @@ class VersionsController < ApplicationController
 | 
			
		|||
  def index
 | 
			
		||||
    return render_not_found unless @project.has_menu_permission("versions")
 | 
			
		||||
    @user_admin_or_member = current_user.present? && (current_user.admin || @project.member?(current_user))
 | 
			
		||||
    order_name = params[:order_name] || "created_on"
 | 
			
		||||
    order_type = params[:order_type] || "desc"
 | 
			
		||||
    status = params[:status]
 | 
			
		||||
    versions = @project.versions.version_includes
 | 
			
		||||
    @open_versions_size = versions.where(status: "open")&.size
 | 
			
		||||
| 
						 | 
				
			
			@ -27,9 +25,6 @@ class VersionsController < ApplicationController
 | 
			
		|||
  end
 | 
			
		||||
 | 
			
		||||
  def show
 | 
			
		||||
    order_name = params[:order_name] || "created_on"
 | 
			
		||||
    order_type = params[:order_type] || "desc"
 | 
			
		||||
 | 
			
		||||
    version_issues = @version.issues.issue_includes
 | 
			
		||||
 | 
			
		||||
    status_type = params[:status_type] || "1"
 | 
			
		||||
| 
						 | 
				
			
			@ -167,4 +162,12 @@ class VersionsController < ApplicationController
 | 
			
		|||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
   def order_name
 | 
			
		||||
    Version.column_names.include?(params[:order_name]) ? params[:order_name] : 'created_on'
 | 
			
		||||
   end
 | 
			
		||||
 | 
			
		||||
   def order_type
 | 
			
		||||
    %w(desc asc).include?(params[:order_type]) ? params[:order_type] : 'desc'
 | 
			
		||||
   end
 | 
			
		||||
 | 
			
		||||
end
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -55,8 +55,8 @@ class Projects::ListMyQuery < ApplicationQuery
 | 
			
		|||
 | 
			
		||||
    scope = q.result.includes(:project_category, :project_language,:owner, :repository, :has_pinned_users)
 | 
			
		||||
 | 
			
		||||
    sort = params[:sort_by] || "updated_on"
 | 
			
		||||
    sort_direction = params[:sort_direction] || "desc"
 | 
			
		||||
    sort = Project.column_names.include?(params[:sort_by]) ? params[:sort_by] : "updated_on"
 | 
			
		||||
    sort_direction = %w(desc asc).include?(params[:sort_direction]) ? params[:sort_direction] : "desc"
 | 
			
		||||
    
 | 
			
		||||
    if params[:choosed].present? && params[:choosed].is_a?(Array)
 | 
			
		||||
      scope.order("FIELD(id, #{params[:choosed].reverse.join(",")}) desc")
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -28,10 +28,10 @@ class Weapps::SubjectQuery < ApplicationQuery
 | 
			
		|||
  private
 | 
			
		||||
 | 
			
		||||
  def order_type
 | 
			
		||||
    params[:order] || "updated_at"
 | 
			
		||||
    Subject.column_names.include?(params[:order]) ? params[:order] : 'updated_at'
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def sort_type
 | 
			
		||||
    params[:sort] || "desc"
 | 
			
		||||
    %w(desc asc).include?(params[:sort]) ? params[:sort] : "desc"
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
| 
						 | 
				
			
			@ -45,9 +45,17 @@ class Issues::ListQueryService < ApplicationService
 | 
			
		|||
    issues = issues.where(issue_type: params[:issue_type].to_s) if params[:issue_type].present? && params[:issue_type].to_s != "all"
 | 
			
		||||
    issues = issues.joins(:issue_tags).where(issue_tags: {id: params[:issue_tag_id].to_i}) if params[:issue_tag_id].present? && params[:issue_tag_id].to_s != "all"
 | 
			
		||||
 | 
			
		||||
    order_type = params[:order_type] || "desc"   #或者"asc"
 | 
			
		||||
    order_name = params[:order_name] || "updated_on"   #或者"updated_on"
 | 
			
		||||
    issues.reorder("issues.#{order_name} #{order_type}")
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  private 
 | 
			
		||||
 | 
			
		||||
  def order_name
 | 
			
		||||
    Issue.column_names.include?(params[:order_name]) ? params[:order_name] : 'updated_on'
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def order_type 
 | 
			
		||||
    %w(desc asc).include?(params[:order_type]) ? params[:order_type] : 'desc'
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
end
 | 
			
		||||
		Loading…
	
		Reference in New Issue