Escape user input before building regexps

This commit is contained in:
rulingcom committed 2026-10-24 13:17:16 +08:00
1 parent 50c4b93b27
commit 93cc261752
2 files changed
+6 -6

No files matched your search

+3 -3
View File
@@ -175,7 +175,7 @@ class Admin::SeminarsController < OrbitAdminController
@seminar_signup_admin_setting = SeminarSignupAdminSetting.create(:seminar_main_id=>"enquiry_for_applicants")
end
if params[:name].present?
@seminar_signups = SeminarSignup.where(:name => /#{params[:name]}/).sort_ordered.page(params[:page]).per(10)
@seminar_signups = SeminarSignup.where(:name => /#{Regexp.escape(params[:name].to_s)}/).sort_ordered.page(params[:page]).per(10)
else
@seminar_signups = []
end
@@ -606,7 +606,7 @@ class Admin::SeminarsController < OrbitAdminController
if params[:search].to_i != 0
@seminar_signups = @seminar.seminar_signups.where(:serial_number=>params[:search].to_i)
else
@seminar_signups = @seminar.seminar_signups.where(:name=>/#{params[:search]}/)
@seminar_signups = @seminar.seminar_signups.where(:name=>/#{Regexp.escape(params[:search].to_s)}/)
end
elsif params[:type] == "session"
assigned_seminar_signups = @seminar.seminar_sessions.pluck(:seminar_signup_ids,:default_seminar_signup_ids).flatten
@@ -616,7 +616,7 @@ class Admin::SeminarsController < OrbitAdminController
if @seminar.assign_mode != 0
unassigned_seminar_signup_ids = @seminar.unassigned_mode_1_seminar_signup_ids
end
@seminar_signups = @seminar.seminar_signups.where(:id.in => unassigned_seminar_signup_ids, :name=>/#{params[:search]}/)
@seminar_signups = @seminar.seminar_signups.where(:id.in => unassigned_seminar_signup_ids, :name=>/#{Regexp.escape(params[:search].to_s)}/)
end
OrbitHelper.set_params(params,current_user)
@access_level = OrbitHelper.user_access_level?
@@ -12,7 +12,7 @@ class CustomBulletinsController < ApplicationController
I18n.locale = :zh_tw
if !params[:keyword].blank?
keyword = Regexp.new(".*"+params[:keyword]+".*")
keyword = Regexp.new(".*"+Regexp.escape(params[:keyword].to_s)+".*")
custom_bulletins = CustomBulletin.any_of({:title=>keyword},{:subtitle=>keyword},{:text=>keyword})
else
custom_bulletins = CustomBulletin.all
@@ -20,7 +20,7 @@ class CustomBulletinsController < ApplicationController
if !params[:category].blank?
module_id = ModuleApp.where(:key=>"custom_announcement").first.id
category = Regexp.new(".*"+params[:category]+".*")
category = Regexp.new(".*"+Regexp.escape(params[:category].to_s)+".*")
category_id = Category.where(:title => category, :module_app_id => module_id).first.id
custom_bulletins = custom_bulletins.where(:category_id => category_id)
else
@@ -83,7 +83,7 @@ class CustomBulletinsController < ApplicationController
# 計算總筆數 Start
if !params[:keyword].blank?
keyword = Regexp.new(".*"+params[:keyword]+".*")
keyword = Regexp.new(".*"+Regexp.escape(params[:keyword].to_s)+".*")
custom_bulletin_count = CustomBulletin.any_of({:title=>keyword},{:subtitle=>keyword},{:text=>keyword})
else
custom_bulletin_count = CustomBulletin.all