Module: SourceMonitor::Security::ParameterSanitizer

Defined in:
lib/source_monitor/security/parameter_sanitizer.rb

Class Method Summary collapse

Class Method Details

.safe_redirect_path(raw_value) ⇒ Object



10
11
12
13
14
15
# File 'lib/source_monitor/security/parameter_sanitizer.rb', line 10

def safe_redirect_path(raw_value)
  return if raw_value.blank?

  sanitized = sanitize(raw_value.to_s)
  sanitized.start_with?("/") ? sanitized : nil
end

.sanitize(value) ⇒ Object



17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/source_monitor/security/parameter_sanitizer.rb', line 17

def sanitize(value)
  case value
  when ActionController::Parameters
    sanitize(value.to_unsafe_h)
  when Hash
    value.each_with_object({}) do |(key, val), memo|
      memo[key] = sanitize(val)
    end
  when Array
    value.map { |element| sanitize(element) }
  when String
    sanitize_string(value)
  else
    value
  end
end