fix(admin platform orders form): escape regex and block nested back

This commit is contained in:
萝卜
2026-03-14 10:15:04 +00:00
parent 26d74cbb41
commit 2afe7dc8b7

View File

@@ -127,7 +127,10 @@
$incomingBack = (string) ($defaults['back'] ?? '');
// 为避免 & 被 Blade escape 成 & 导致回退上下文丢失,这里需要原样输出 href。
// 安全护栏:必须为站内相对路径,并拒绝引号/尖括号,降低 XSS 风险。
$safeBack = (str_starts_with($incomingBack, '/') && !preg_match('/["\'<>]/', $incomingBack))
$safeBack = (str_starts_with($incomingBack, '/')
&& !preg_match('/["\'<>]/', $incomingBack)
// back 本身不应再包含 back避免无限嵌套导致 URL 膨胀)
&& !preg_match('/(?:^|[?&])back=/', $incomingBack))
? $incomingBack
: '';
@endphp