如何编写PHP函数检查GET全局page变量返回值完成变量赋值
适配现有逻辑的check函数实现
你现有代码流程为默认给$title赋值"Links",检测到$_GET['page']存在时调用check函数处理参数并覆盖赋值,对应的函数实现需要兼顾兼容性与安全防护,具体可直接落地的代码如下:
function check(string $rawPage): string { // 过滤特殊字符,转义可引发XSS的危险内容 $safePage = trim(filter_var( $rawPage, FILTER_SANITIZE_FULL_SPECIAL_CHARS )); // 配置合法参数与对应标题的白名单映射,从根源阻断非法参数注入 $titleMap = [ 'home' => '站点首页', 'article' => '文章列表', 'about' => '关于站点', 'message' => '留言板' ]; // 命中白名单返回对应标题,未命中则回退为默认值 return $titleMap[$safePage] ?? 'Links'; }
落地使用注意点
- 禁止在
check函数中直接返回原始传入的GET参数值,否则用户可构造带恶意脚本的请求参数,直接触发反射型XSS漏洞 - 白名单校验的安全等级远高于正则校验、长度限制,可完全控制允许传入的参数范围,避免非法值污染页面内容
- 如果业务无需固定标题映射,至少要在函数内增加参数长度截断(比如限制最长20个字符),防止超长参数破坏页面布局
内容的提问来源于stack exchange,提问作者LurpThurst
相关产品推荐
相关产品推荐

