BackUrl::sanitizeForLinks 加强:拒绝二次编码 back%3D 绕过 并补单测

This commit is contained in:
萝卜
2026-03-15 04:11:42 +00:00
parent 54f356f52d
commit e86257e866
2 changed files with 12 additions and 0 deletions

View File

@@ -27,9 +27,17 @@ class BackUrl
}
// 拒绝 back 自身再包含 back=(避免无限嵌套导致 URL 膨胀,且容易绕过页面侧护栏)
// 同时拒绝“二次编码”的 back%3D例如 %2526back%253D 经过一次 urldecode 后变成 %26back%3D
// 在浏览器点击后会再次被解码为 &back=,形成绕过)。
if (preg_match('/(?:^|[?&])back=/', $incomingBack)) {
return '';
}
if (preg_match('/(?:^|[?&]|%26|%3f)back%3d/i', $incomingBack)) {
return '';
}
if (preg_match('/back%253d/i', $incomingBack)) {
return '';
}
return $incomingBack;
}