fn backup_path(filename: &str) -> PathBufExpand description
构造 backups/ 下的安全路径(额外防御:校验规范化后仍在 BACKUP_DIR 内)。
纵深防御:即便第一道白名单 is_valid_backup_filename 被绕过,这里也要
保证结果不逃出 BACKUP_DIR。直接对 filename 做 components 检查——
含 ..(ParentDir)、绝对路径前缀(RootDir/Prefix,如 /etc 或 C:\)
的 filename 一律降级为 BACKUP_DIR 本身。
注意:不能用 [BACKUP_DIR, filename].collect::<PathBuf>() 后再检——
当 filename 是绝对路径时,PathBuf 语义会丢弃 BACKUP_DIR 前缀(如
["backups", "/etc/passwd"] → /etc/passwd),导致 components 检查
在错位的路径上运行而漏判。必须先检 filename 本身。