可能 SQL 在控制器中注入
Possible SQL injection in a controller
我在 Ruby 中有这段代码,我相信它可能是一个 SQL 注入点
@remaining_mdls = @remaining_mdls&.where("\"#{paginated_params_name}\" > ?", paginated_params_val) if paginated_params_val.present?
此方法检查某些对象的可用性,但我认为它可能被用于恶意目的。
这样安全吗?
是的。您正在插入 paginated_params_name
。
最简单的解决方法是验证 paginated_params_name
是否包含在已知列的列表中:
ALLOWED_PAGINATED_PARAMS = %w(created_at updated_at ...)
if paginated_params_val.present?
unless ALLOWED_PAGINATED_PARAMS.include?(paginated_params_name)
fail "Unknown pagination param '#{paginated_params_name}'"
end
@remaining_mdls = @remaining_mdls&.where("\"#{paginated_params_name}\" > ?", paginated_params_val)
end
我在 Ruby 中有这段代码,我相信它可能是一个 SQL 注入点
@remaining_mdls = @remaining_mdls&.where("\"#{paginated_params_name}\" > ?", paginated_params_val) if paginated_params_val.present?
此方法检查某些对象的可用性,但我认为它可能被用于恶意目的。
这样安全吗?
是的。您正在插入 paginated_params_name
。
最简单的解决方法是验证 paginated_params_name
是否包含在已知列的列表中:
ALLOWED_PAGINATED_PARAMS = %w(created_at updated_at ...)
if paginated_params_val.present?
unless ALLOWED_PAGINATED_PARAMS.include?(paginated_params_name)
fail "Unknown pagination param '#{paginated_params_name}'"
end
@remaining_mdls = @remaining_mdls&.where("\"#{paginated_params_name}\" > ?", paginated_params_val)
end