fix: sanitize public provenance links

This commit is contained in:
ik
2026-09-21 18:26:38 +07:00
parent f3eb54083f
commit 11e54a7842
6 changed files with 29 additions and 4 deletions
+3 -1
View File
@@ -1,4 +1,5 @@
---
import { safeHttpUrl } from "../lib/urls";
const { source, href, tone = "source" } = Astro.props as { source: string; href?: string | null; tone?: "source" | "incomplete" | "verified" };
const labels: Record<string, string> = {
"rf4-official": "RF4 · официальный",
@@ -12,5 +13,6 @@ const labels: Record<string, string> = {
};
const label = labels[source] ?? source;
const mark = source === "players" ? "♟" : source === "rf4-official" ? "★" : "↗";
const safeHref = safeHttpUrl(href);
---
{href ? <a class="source-chip" data-source={source} data-tone={tone} href={href} target="_blank" rel="noreferrer" title={`Открыть источник: ${label}`}><i>{mark}</i><span>{label}</span></a> : <span class="source-chip" data-source={source} data-tone={tone}><i>{mark}</i><span>{label}</span></span>}
{safeHref ? <a class="source-chip" data-source={source} data-tone={tone} href={safeHref} target="_blank" rel="noreferrer" title={`Открыть источник: ${label}`}><i>{mark}</i><span>{label}</span></a> : <span class="source-chip" data-source={source} data-tone={tone}><i>{mark}</i><span>{label}</span></span>}