Files
manyfold/app/validators/safe_path_validator.rb
2024-09-25 09:38:16 +01:00

25 lines
432 B
Ruby

class SafePathValidator < ActiveModel::EachValidator
UNSAFE = [
nil,
"bin",
"boot",
"dev",
"etc",
"lib",
"lost",
"proc",
"root",
"run",
"sbin",
"selinux",
"srv",
"usr"
]
def validate_each(record, attribute, value)
return if value.nil?
start = Pathname.new(value).each_filename.to_a.first
record.errors.add attribute, :unsafe if UNSAFE.any?(start)
end
end