今天碰到个哭笑不得的问题,PHP 在处理 POST 时会把 key 的 . 替换成 _,原因非常古老,搜到 stackoverflow 上我才想起来,4.0 的时候 GET/POST 过去的内容是直接做为变量名的。例如 $_POST['key'] 在 4.0 的时候是直接得到个变量 $key(如果没有提前声明变量,就可以在 GET 参数里做提前赋值的攻击,那个时代很多著名 PHP 软件都有过此安全漏洞
今天碰到个哭笑不得的问题,PHP 在处理 POST 时会把 key 的 . 替换成 _,原因非常古老,搜到 stackoverflow 上我才想起来,4.0 的时候 GET/POST 过去的内容是直接做为变量名的。例如 $_POST['key'] 在 4.0 的时候是直接得到个变量 $key(如果没有提前声明变量,就可以在 GET 参数里做提前赋值的攻击,那个时代很多著名 PHP 软件都有过此安全漏洞