fix(back): PlanController back 校验增强(拒绝引号/尖括号)

This commit is contained in:
萝卜
2026-03-14 01:25:42 +00:00
parent a286e19e08
commit 8f5db9cc24

View File

@@ -148,7 +148,8 @@ class PlanController extends Controller
$this->ensurePlatformAdmin($request); $this->ensurePlatformAdmin($request);
$back = (string) $request->query('back', ''); $back = (string) $request->query('back', '');
$safeBack = str_starts_with($back, '/') ? $back : ''; // back 需为站内相对路径,并拒绝引号/尖括号,避免后续页面以 `{!! !!}` 原样输出时引入 XSS 风险。
$safeBack = (str_starts_with($back, '/') && !preg_match('/["\'<>]/', $back)) ? $back : '';
return view('admin.plans.form', [ return view('admin.plans.form', [
'plan' => new Plan(), 'plan' => new Plan(),
@@ -167,7 +168,8 @@ class PlanController extends Controller
$data = $this->validatePlan($request); $data = $this->validatePlan($request);
$back = (string) $request->input('back', ''); $back = (string) $request->input('back', '');
$safeBack = str_starts_with($back, '/') ? $back : ''; // back 需为站内相对路径,并拒绝引号/尖括号,避免后续页面以 `{!! !!}` 原样输出时引入 XSS 风险。
$safeBack = (str_starts_with($back, '/') && !preg_match('/["\'<>]/', $back)) ? $back : '';
$plan = Plan::query()->create($data); $plan = Plan::query()->create($data);
@@ -183,7 +185,8 @@ class PlanController extends Controller
$this->ensurePlatformAdmin($request); $this->ensurePlatformAdmin($request);
$back = (string) $request->query('back', ''); $back = (string) $request->query('back', '');
$safeBack = str_starts_with($back, '/') ? $back : ''; // back 需为站内相对路径,并拒绝引号/尖括号,避免后续页面以 `{!! !!}` 原样输出时引入 XSS 风险。
$safeBack = (str_starts_with($back, '/') && !preg_match('/["\'<>]/', $back)) ? $back : '';
return view('admin.plans.form', [ return view('admin.plans.form', [
'plan' => $plan, 'plan' => $plan,
@@ -222,7 +225,8 @@ class PlanController extends Controller
$data = $this->validatePlan($request, $plan->id); $data = $this->validatePlan($request, $plan->id);
$back = (string) $request->input('back', ''); $back = (string) $request->input('back', '');
$safeBack = str_starts_with($back, '/') ? $back : ''; // back 需为站内相对路径,并拒绝引号/尖括号,避免后续页面以 `{!! !!}` 原样输出时引入 XSS 风险。
$safeBack = (str_starts_with($back, '/') && !preg_match('/["\'<>]/', $back)) ? $back : '';
$plan->update($data); $plan->update($data);