fix(back): render safeBack raw with stronger validation on index/form pages
This commit is contained in:
@@ -32,11 +32,15 @@
|
||||
|
||||
@php
|
||||
$incomingBack = (string) request()->query('back', '');
|
||||
$safeBack = str_starts_with($incomingBack, '/') ? $incomingBack : '';
|
||||
// 为避免 & 被 Blade escape 成 & 导致回退上下文丢失,这里需要原样输出 href。
|
||||
// 安全护栏:必须为站内相对路径,并拒绝引号/尖括号,降低 XSS 风险。
|
||||
$safeBack = (str_starts_with($incomingBack, '/') && !preg_match('/["\'<>]/', $incomingBack))
|
||||
? $incomingBack
|
||||
: '';
|
||||
@endphp
|
||||
@if($safeBack)
|
||||
<div class="mt-10">
|
||||
<a href="{{ $safeBack }}" class="muted">← 返回上一页(保留上下文)</a>
|
||||
<a href="{!! $safeBack !!}" class="muted">← 返回上一页(保留上下文)</a>
|
||||
</div>
|
||||
@endif
|
||||
</div>
|
||||
|
||||
@@ -88,11 +88,15 @@
|
||||
<div class="form-actions">
|
||||
@php
|
||||
$incomingBack = (string) ($defaults['back'] ?? '');
|
||||
$safeBack = str_starts_with($incomingBack, '/') ? $incomingBack : '';
|
||||
// 为避免 & 被 Blade escape 成 & 导致回退上下文丢失,这里需要原样输出 href。
|
||||
// 安全护栏:必须为站内相对路径,并拒绝引号/尖括号,降低 XSS 风险。
|
||||
$safeBack = (str_starts_with($incomingBack, '/') && !preg_match('/["\'<>]/', $incomingBack))
|
||||
? $incomingBack
|
||||
: '';
|
||||
@endphp
|
||||
|
||||
@if($safeBack)
|
||||
<a href="{{ $safeBack }}" class="btn-secondary">返回(保留上下文)</a>
|
||||
<a href="{!! $safeBack !!}" class="btn-secondary">返回(保留上下文)</a>
|
||||
@else
|
||||
<a href="/admin/platform-orders" class="btn-secondary">返回</a>
|
||||
@endif
|
||||
|
||||
@@ -23,11 +23,15 @@
|
||||
|
||||
@php
|
||||
$back = (string) request()->query('back', '');
|
||||
$safeBack = str_starts_with($back, '/') ? $back : '';
|
||||
// 为避免 & 被 Blade escape 成 & 导致回退上下文丢失,这里需要原样输出 href。
|
||||
// 安全护栏:必须为站内相对路径,并拒绝引号/尖括号,降低 XSS 风险。
|
||||
$safeBack = (str_starts_with($back, '/') && !preg_match('/["\'<>]/', $back))
|
||||
? $back
|
||||
: '';
|
||||
@endphp
|
||||
@if($safeBack)
|
||||
<div class="mt-10">
|
||||
<a href="{{ $safeBack }}" class="muted">← 返回上一页(保留上下文)</a>
|
||||
<a href="{!! $safeBack !!}" class="muted">← 返回上一页(保留上下文)</a>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
|
||||
@@ -40,11 +40,15 @@
|
||||
|
||||
@php
|
||||
$incomingBack = (string) request()->query('back', '');
|
||||
$safeBack = str_starts_with($incomingBack, '/') ? $incomingBack : '';
|
||||
// 为避免 & 被 Blade escape 成 & 导致回退上下文丢失,这里需要原样输出 href。
|
||||
// 安全护栏:必须为站内相对路径,并拒绝引号/尖括号,降低 XSS 风险。
|
||||
$safeBack = (str_starts_with($incomingBack, '/') && !preg_match('/["\'<>]/', $incomingBack))
|
||||
? $incomingBack
|
||||
: '';
|
||||
@endphp
|
||||
@if($safeBack)
|
||||
<div class="mt-10">
|
||||
<a href="{{ $safeBack }}" class="muted">← 返回上一页(保留上下文)</a>
|
||||
<a href="{!! $safeBack !!}" class="muted">← 返回上一页(保留上下文)</a>
|
||||
</div>
|
||||
@endif
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user