fix(back): index 页 back 校验拒绝 nested back + 调整测试断言

This commit is contained in:
萝卜
2026-03-14 02:12:29 +00:00
parent 7479eb0e77
commit bb40ff692c
4 changed files with 27 additions and 7 deletions

View File

@@ -25,7 +25,10 @@
$back = (string) request()->query('back', '');
// 为避免 & 被 Blade escape 成 & 导致回退上下文丢失,这里需要原样输出 href。
// 安全护栏:必须为站内相对路径,并拒绝引号/尖括号,降低 XSS 风险。
$safeBack = (str_starts_with($back, '/') && !preg_match('/["\'<>]/', $back))
$safeBack = (str_starts_with($back, '/')
&& !preg_match('/["\'<>]/', $back)
// back 本身不应再包含 back避免无限嵌套导致 URL 膨胀)
&& !preg_match('/(?:^|[?&])back=/', $back))
? $back
: '';
@endphp
@@ -113,7 +116,10 @@
// “全部”:清空筛选,但保留 back用于返回来源页
$incomingBack = (string) request()->query('back', '');
$safeBack = (str_starts_with($incomingBack, '/') && !preg_match('/["\'<>]/', $incomingBack))
$safeBack = (str_starts_with($incomingBack, '/')
&& !preg_match('/["\'<>]/', $incomingBack)
// back 本身不应再包含 back避免无限嵌套导致 URL 膨胀)
&& !preg_match('/(?:^|[?&])back=/', $incomingBack))
? $incomingBack
: '';
$allUrl = '/admin/platform-orders';