Sha256: 6354927483afdaf87aa0633948c58249e347b3194c5c4b40a627778f2d95e161

Contents?: true

Size: 1.35 KB

Versions: 36

Compression:

Stored size: 1.35 KB

Contents

module Raven
  class Processor::HTTPHeaders < Processor
    DEFAULT_FIELDS = ["Authorization"].freeze

    attr_accessor :sanitize_http_headers

    def initialize(client)
      super
      self.sanitize_http_headers = client.configuration.sanitize_http_headers
    end

    def process(data)
      process_if_symbol_keys(data) if data[:request]
      process_if_string_keys(data) if data["request"]

      data
    end

    private

    def process_if_symbol_keys(data)
      return unless data[:request][:headers]

      data[:request][:headers].keys.select { |k| fields_re.match(k.to_s) }.each do |k|
        data[:request][:headers][k] = STRING_MASK
      end
    end

    def process_if_string_keys(data)
      return unless data["request"]["headers"]

      data["request"]["headers"].keys.select { |k| fields_re.match(k) }.each do |k|
        data["request"]["headers"][k] = STRING_MASK
      end
    end

    def matches_regexes?(k)
      fields_re.match(k.to_s)
    end

    def fields_re
      @fields_re ||= /#{(DEFAULT_FIELDS | sanitize_http_headers).map do |f|
        use_boundary?(f) ? "\\b#{f}\\b" : f
      end.join("|")}/i
    end

    def use_boundary?(string)
      !DEFAULT_FIELDS.include?(string) && !special_characters?(string)
    end

    def special_characters?(string)
      REGEX_SPECIAL_CHARACTERS.select { |r| string.include?(r) }.any?
    end
  end
end

Version data entries

36 entries across 36 versions & 3 rubygems

Version Path
sentry-raven-3.1.2 lib/raven/processor/http_headers.rb
sentry-raven-3.1.1 lib/raven/processor/http_headers.rb
sentry-raven-3.1.0 lib/raven/processor/http_headers.rb
sentry-raven-3.0.4 lib/raven/processor/http_headers.rb
sentry-raven-3.0.3 lib/raven/processor/http_headers.rb
sentry-raven-3.0.2 lib/raven/processor/http_headers.rb
sentry-raven-3.0.1 lib/raven/processor/http_headers.rb
sentry-raven-3.0.0 lib/raven/processor/http_headers.rb
sentry-raven-2.13.0 lib/raven/processor/http_headers.rb
sentry-raven-2.12.3 lib/raven/processor/http_headers.rb
sentry-raven-2.12.2 lib/raven/processor/http_headers.rb
sentry-raven-2.12.1 lib/raven/processor/http_headers.rb
sentry-raven-2.12.0 lib/raven/processor/http_headers.rb
sentry-raven-2.11.3 lib/raven/processor/http_headers.rb
sentry-raven-2.11.2 lib/raven/processor/http_headers.rb
sentry-raven-2.11.1 lib/raven/processor/http_headers.rb
sentry-raven-2.11.0 lib/raven/processor/http_headers.rb
sentry-raven-2.10.0 lib/raven/processor/http_headers.rb
sentry-raven-2.9.0 lib/raven/processor/http_headers.rb
sentry-raven-2.8.0 lib/raven/processor/http_headers.rb