我正在研究现有网站,寻找安全问题。是否可以肯定地说 PHP 脚本在浏览器被重定向后中止,或者狡猾的用户可以以某种方式强制脚本继续。如果用户当前已登录,则假设“is_logged_in”返回 1 或 0。假设此函数中没有漏洞。代码如下:
<?
$fp = fopen("./debug.txt", "a");
fwrite("BEFORE LOGIN CHECK\n");
if(!is_logged_in()) {
fwrite("Not authed \n");
header("Location: $url", TRUE, 302);
}
fwrite("Passed auth check \n");
/* Code to do some logged in functionality here */
?>
使用带有登录用户的普通浏览器,我得到
BEFORE LOGIN CHECK
Passed auth check
我得到了一个未登录的用户
BEFORE LOGIN CHECK
Not authed
是否可以使用原始请求保持脚本打开(并忽略重定向),以便我得到
BEFORE LOGIN CHECK
Not authed
Passed auth check
基本上进入 if 块,获取重定向标头,忽略它,然后让脚本继续执行。
如果不是,我会通过执行以下操作来纠正问题:
if(!is_logged_in()) {
fwrite("Not authed \n");
header("Location: $url", TRUE, 302);
die();
}
但我不确定这是否是一个问题。