// ============================================================ // path.ts — 路径安全工具函数 // // 职责: // - 路径穿越防护 // - 目录创建 // ============================================================ import fs from 'node:fs'; import path from 'node:path'; /** * 将相对路径解析为绝对路径,并校验是否在 dataDir 内。 * 防止路径穿越攻击(../ 穿越)。 */ export function resolveSafe(dataDir: string, relativePath: string): string { const resolved = path.resolve(dataDir, relativePath); if (!resolved.startsWith(dataDir + path.sep) && resolved !== dataDir) { throw new Error(`路径越界:${relativePath}`); } return resolved; } /** 确保目录存在(递归创建) */ export function ensureDir(dirPath: string): void { if (!fs.existsSync(dirPath)) { fs.mkdirSync(dirPath, { recursive: true }); } }