fix security 1
This commit is contained in:
@@ -0,0 +1,26 @@
|
||||
export function safeAppUrl(value, fallback = "/") {
|
||||
try {
|
||||
const url = new URL(String(value || ""), location.origin);
|
||||
if (url.origin !== location.origin || !["http:", "https:"].includes(url.protocol)) return fallback;
|
||||
return `${url.pathname}${url.search}${url.hash}`;
|
||||
} catch {
|
||||
return fallback;
|
||||
}
|
||||
}
|
||||
|
||||
export function safePublicUrl(value, { allowMailto = true } = {}) {
|
||||
const raw = String(value || "").trim();
|
||||
if (!raw || raw.startsWith("//")) return "#";
|
||||
try {
|
||||
const url = new URL(raw, location.origin);
|
||||
if (url.protocol === "mailto:" && allowMailto) return url.href;
|
||||
if (!["http:", "https:"].includes(url.protocol)) return "#";
|
||||
return url.href;
|
||||
} catch {
|
||||
return "#";
|
||||
}
|
||||
}
|
||||
|
||||
export function safeHexColor(value, fallback = "#64748b") {
|
||||
return /^#[0-9a-f]{6}$/i.test(String(value || "")) ? String(value) : fallback;
|
||||
}
|
||||
Reference in New Issue
Block a user