Class: PiiScrubber::Detectors::DatabaseUrl
- Defined in:
- lib/pii_scrubber/detectors/database_url.rb
Constant Summary collapse
- DATABASE_URL_REGEX =
Matches connection strings with embedded user/password credentials
/\b(?:postgres(?:ql)?|mysql2?|mongodb(?:\+srv)?|rediss?|amqps?|mssql|sqlserver):\/\/(?:[^:\s\/]+:)?(?:[^@\s\/]+)@[^\s\/:]+(?::\d+)?(?:\/[^\s"']*)?/i
Instance Attribute Summary
Attributes inherited from Base
Instance Method Summary collapse
-
#initialize ⇒ DatabaseUrl
constructor
A new instance of DatabaseUrl.
- #patterns ⇒ Object
- #replace(match, strategy: :placeholder, mask_char: "*", hmac_salt: nil) ⇒ Object
- #valid?(match) ⇒ Boolean
Constructor Details
#initialize ⇒ DatabaseUrl
Returns a new instance of DatabaseUrl.
11 12 13 |
# File 'lib/pii_scrubber/detectors/database_url.rb', line 11 def initialize super(name: :database_url) end |
Instance Method Details
#patterns ⇒ Object
15 16 17 |
# File 'lib/pii_scrubber/detectors/database_url.rb', line 15 def patterns [DATABASE_URL_REGEX] end |
#replace(match, strategy: :placeholder, mask_char: "*", hmac_salt: nil) ⇒ Object
24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
# File 'lib/pii_scrubber/detectors/database_url.rb', line 24 def replace(match, strategy: :placeholder, mask_char: "*", hmac_salt: nil) case strategy when :mask # Mask password while preserving scheme, username, host and database match.sub(%r{://(?:([^:@\s/]+):)?([^@\s/]+)@}) do user_part = $1 ? "#{$1}:" : "" "://#{user_part}#{mask_char * 8}@" end when :placeholder "[REDACTED:DATABASE_URL]" else super end end |
#valid?(match) ⇒ Boolean
19 20 21 22 |
# File 'lib/pii_scrubber/detectors/database_url.rb', line 19 def valid?(match) # Ensure it contains @ separating credentials from host match.include?("@") && match.include?("://") end |