fix(back): index 页 back 校验拒绝 nested back + 调整外链断言护栏

This commit is contained in:
萝卜
2026-03-14 02:15:02 +00:00
parent bb40ff692c
commit 9fc289d739

View File

@@ -32,14 +32,18 @@ class AdminPlatformOrderIndexBackLinkNotEscapedTest extends TestCase
->assertSee('href="' . $back . '"', false);
}
public function test_index_should_not_show_back_link_when_back_is_external_url(): void
public function test_index_should_not_render_back_href_when_back_is_external_url(): void
{
$this->loginAsPlatformAdmin();
$this->get('/admin/platform-orders?back=' . urlencode('https://evil.example.com/?x=1&y=2'))
->assertOk()
// 页面仍会出现“返回上一页保留上下文”文案其它位置也有例如治理SOP卡提示
// 因此这里改为断言:不应出现该 external back 的 href。
->assertDontSee('href="https://evil.example.com/?x=1&y=2"', false);
$evil = 'https://evil.example.com/?x=1&y=2';
$res = $this->get('/admin/platform-orders?back=' . urlencode($evil));
$res->assertOk();
// 页面可能在其它位置出现“返回上一页(保留上下文)”文案,因此不做纯文本否定断言。
// 关键护栏:不应渲染任何指向外部 URL 的 back href。
$res->assertDontSee('href="' . $evil . '"', false);
$res->assertDontSee('href="' . str_replace('&', '&', $evil) . '"', false);
}
}