同步操作将从 HBAI-Ltd/Toonflow-app 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
import path from "node:path";export default function replaceUrl(url: string): string {if (typeof url !== "string" || !url.trim()) return "";let cleanedPath = "";try {const pathname = new URL(url).pathname;cleanedPath = pathname;} catch (e) {// 如果不是有效的URL,则直接使用原字符串cleanedPath = url;}cleanedPath = cleanedPath.replace(/^\/oss/, "").replace(/^\/smallImage/, "");// 去除 query 参数cleanedPath = cleanedPath.split("?")[0];// 防止路径穿越:对路径进行规范化后,确保不含上溯分量// 使用 posix 规范化(保持 / 分隔符),去除所有 .. 和 .const normalized = path.posix.normalize(cleanedPath);// 规范化后若路径以 ../ 开头或等于 .. 则说明发生了路径穿越,拒绝并返回空字符串if (normalized.startsWith("../") || normalized === "..") {return "";}// 去除前导斜杠,保证返回的是相对路径return normalized.replace(/^\/+/, "");}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。