Banking-Sales-Predictor / packages /path_validator.py
nbintang
update readme.md
051911c
Raw
History Blame Contribute Delete
554 Bytes
import re
from pathlib import Path
SAFE_FILENAME_REGEX = r"^[A-Za-z0-9_\-]+\.(pkl|json)$"
def safe_path(filename: str, base_dir: str = "models_info") -> str:
if not re.match(SAFE_FILENAME_REGEX, filename):
raise ValueError(f"Invalid file name: {filename}")
base = Path(base_dir).resolve()
full_path = (base / filename).resolve()
# Prevent directory traversal (../../../ etc)
if not str(full_path).startswith(str(base)):
raise ValueError("Directory traversal detected!")
return str(full_path)