Skip to main content

backup_path

Function backup_path 

Source
fn backup_path(filename: &str) -> PathBuf
Expand description

构造 backups/ 下的安全路径(额外防御:校验规范化后仍在 BACKUP_DIR 内)。

纵深防御:即便第一道白名单 is_valid_backup_filename 被绕过,这里也要 保证结果不逃出 BACKUP_DIR。直接对 filename 做 components 检查—— 含 ..(ParentDir)、绝对路径前缀(RootDir/Prefix,如 /etcC:\) 的 filename 一律降级为 BACKUP_DIR 本身。

注意:不能用 [BACKUP_DIR, filename].collect::<PathBuf>() 后再检—— 当 filename 是绝对路径时,PathBuf 语义会丢弃 BACKUP_DIR 前缀(如 ["backups", "/etc/passwd"]/etc/passwd),导致 components 检查 在错位的路径上运行而漏判。必须先检 filename 本身。