Module: Contrast::Agent::Telemetry::Exception::Obfuscate

Defined in:
lib/contrast/agent/telemetry/exception/obfuscate.rb

Overview

Obfuscate sensitive user data before building exception.

Constant Summary collapse

CHARS =
'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'.cs__freeze
CYPHER =

This will generate different chars for each agent startup but will be constant for current run and will make identical obfuscation to be compared if given type is the same.

CHARS.chars.shuffle.join.cs__freeze
VERSION_MATCH =
'[^0-9].-'
RUBY_EXT =
/\.(?:rb|gemspec)$/i
KNOWN_DIRS =

List of known places after witch a user name might appear:

%w[app application lib project projects git github users home user].cs__freeze

Class Method Summary collapse

Class Method Details

.known_pathsArray<Regexp>

Returns paths for known gems.

Returns:

  • (Array<Regexp>)

    known paths



28
29
30
31
32
# File 'lib/contrast/agent/telemetry/exception/obfuscate.rb', line 28

def known_paths
  @_known_paths ||= KNOWN_DIRS.map do |name|
    to_regexp(name)
  end
end

.obfuscate_path(path) ⇒ String

Obfuscate a type and replace it with random characters.

Parameters:

  • path (String)

    the StackFrame type to obfuscate

Returns:

  • (String)

    obfuscated type



38
39
40
41
42
# File 'lib/contrast/agent/telemetry/exception/obfuscate.rb', line 38

def obfuscate_path path
  return path if Contrast::Utils::DuckUtils.empty_duck?(path)

  cypher(path)
end