diff --git a/app/Http/Controllers/Admin/PlanController.php b/app/Http/Controllers/Admin/PlanController.php index 232591a..f697dfc 100644 --- a/app/Http/Controllers/Admin/PlanController.php +++ b/app/Http/Controllers/Admin/PlanController.php @@ -7,6 +7,7 @@ use App\Http\Controllers\Controller; use App\Models\Plan; use App\Models\PlatformOrder; use App\Models\SiteSubscription; +use App\Support\BackUrl; use Illuminate\Database\Eloquent\Builder; use Illuminate\Http\RedirectResponse; use Illuminate\Http\Request; @@ -148,13 +149,8 @@ class PlanController extends Controller $this->ensurePlatformAdmin($request); $back = (string) $request->query('back', ''); - // back 需为站内相对路径,并拒绝引号/尖括号,避免后续页面以 `{!! !!}` 原样输出时引入 XSS 风险。 - $safeBack = (str_starts_with($back, '/') - && !preg_match('/["\'<>]/', $back) - // back 本身不应再包含 back(避免无限嵌套导致 URL 膨胀) - && !preg_match('/(?:^|[?&])back=/', $back)) - ? $back - : ''; + // back 安全阀:统一收敛到 BackUrl::sanitizeForLinks(用于 Blade `{!! !!}` 原样输出场景) + $safeBack = BackUrl::sanitizeForLinks($back); return view('admin.plans.form', [ 'plan' => new Plan(), @@ -173,13 +169,8 @@ class PlanController extends Controller $data = $this->validatePlan($request); $back = (string) $request->input('back', ''); - // back 需为站内相对路径,并拒绝引号/尖括号,避免后续页面以 `{!! !!}` 原样输出时引入 XSS 风险。 - $safeBack = (str_starts_with($back, '/') - && !preg_match('/["\'<>]/', $back) - // back 本身不应再包含 back(避免无限嵌套导致 URL 膨胀) - && !preg_match('/(?:^|[?&])back=/', $back)) - ? $back - : ''; + // back 安全阀:统一收敛到 BackUrl::sanitizeForLinks(用于 Blade `{!! !!}` 原样输出场景) + $safeBack = BackUrl::sanitizeForLinks($back); $plan = Plan::query()->create($data); @@ -195,13 +186,8 @@ class PlanController extends Controller $this->ensurePlatformAdmin($request); $back = (string) $request->query('back', ''); - // back 需为站内相对路径,并拒绝引号/尖括号,避免后续页面以 `{!! !!}` 原样输出时引入 XSS 风险。 - $safeBack = (str_starts_with($back, '/') - && !preg_match('/["\'<>]/', $back) - // back 本身不应再包含 back(避免无限嵌套导致 URL 膨胀) - && !preg_match('/(?:^|[?&])back=/', $back)) - ? $back - : ''; + // back 安全阀:统一收敛到 BackUrl::sanitizeForLinks(用于 Blade `{!! !!}` 原样输出场景) + $safeBack = BackUrl::sanitizeForLinks($back); return view('admin.plans.form', [ 'plan' => $plan, @@ -240,13 +226,8 @@ class PlanController extends Controller $data = $this->validatePlan($request, $plan->id); $back = (string) $request->input('back', ''); - // back 需为站内相对路径,并拒绝引号/尖括号,避免后续页面以 `{!! !!}` 原样输出时引入 XSS 风险。 - $safeBack = (str_starts_with($back, '/') - && !preg_match('/["\'<>]/', $back) - // back 本身不应再包含 back(避免无限嵌套导致 URL 膨胀) - && !preg_match('/(?:^|[?&])back=/', $back)) - ? $back - : ''; + // back 安全阀:统一收敛到 BackUrl::sanitizeForLinks(用于 Blade `{!! !!}` 原样输出场景) + $safeBack = BackUrl::sanitizeForLinks($back); $plan->update($data);