专栏名称: 船山信安
船山院士网络安全团队唯一公众号,为国之安全而奋斗,为信息安全而发声!
今天看啥  ›  专栏  ›  船山信安

原创 | PHP变量安全之函数变量覆盖

船山信安  · 公众号  ·  · 2024-10-19 00:00
    

文章预览

1 函数extract()变量覆盖 extract()函数的作用是从数组中导入变量到当前符号表中,检查每个键是否是有效的变量名。它还检查与符号表中现有变量是否冲突。为了防止发生变量覆盖,在使用的时候需要将flags设置为EXTR_SKIP,以免将已有变量覆盖。 extract($_REQUEST); //使用extract造成变量覆盖 if(authenticated_user()){ //认证用户是否登录 $authorized = true; } ?> 当用户提交的参数中包含authorized = true时,在执行authenticated_user()步骤之前,extract()函数从$_REQUEST中解析到authorized并设置全局变量,它的值被设置为true。此时,用户在无须通过校验的情况下可直接向下执行,绕过了校验逻辑、造成任意越权访问。 为了避免全局变量覆盖的发生,应尽量不使用extract()函数接收客户端参数。下面是修复后的代码。 $username = $_POST['username']; $password = $_POST['password']; ………………………………

原文地址:访问原文地址
快照地址: 访问文章快照
总结与预览地址:访问总结与预览