Module: Ace::Support::Config::Atoms::PathValidator
- Defined in:
- lib/ace/support/config/atoms/path_validator.rb
Overview
Validates path segments for security Prevents path traversal attacks via “..” and absolute paths (Unix and Windows)
This module provides pure validation functions that check path segments for potentially dangerous patterns without any side effects.
Class Method Summary collapse
-
.valid_segment?(segment) ⇒ Boolean
Check if a segment is valid (non-raising version).
-
.valid_segments?(segments) ⇒ Boolean
Check if all segments are valid (non-raising version).
-
.validate_segment!(segment) ⇒ true
Validate a single path segment for security.
-
.validate_segments!(segments) ⇒ true
Validate multiple path segments for security.
Class Method Details
.valid_segment?(segment) ⇒ Boolean
Check if a segment is valid (non-raising version)
55 56 57 58 59 60 |
# File 'lib/ace/support/config/atoms/path_validator.rb', line 55 def valid_segment?(segment) validate_segment!(segment) true rescue ArgumentError false end |
.valid_segments?(segments) ⇒ Boolean
Check if all segments are valid (non-raising version)
65 66 67 68 69 70 |
# File 'lib/ace/support/config/atoms/path_validator.rb', line 65 def valid_segments?(segments) validate_segments!(segments) true rescue ArgumentError false end |
.validate_segment!(segment) ⇒ true
Validate a single path segment for security
29 30 31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/ace/support/config/atoms/path_validator.rb', line 29 def validate_segment!(segment) if segment.include?("..") raise ArgumentError, "Invalid path segment: #{segment.inspect} (path traversal not allowed)" end if segment.start_with?("/") raise ArgumentError, "Invalid path segment: #{segment.inspect} (absolute paths not allowed)" end # Windows-style absolute paths: drive letters (C:) or UNC paths (\\server) if segment.start_with?("\\") || segment.match?(/\A[A-Za-z]:/) raise ArgumentError, "Invalid path segment: #{segment.inspect} (absolute paths not allowed)" end true end |
.validate_segments!(segments) ⇒ true
Validate multiple path segments for security
47 48 49 50 |
# File 'lib/ace/support/config/atoms/path_validator.rb', line 47 def validate_segments!(segments) segments.each { |segment| validate_segment!(segment) } true end |