我正在一个现有的网站上寻找安全问题。可以肯定地说,在浏览器被重定向之后PHP脚本会中止,或者狡猾的用户可能会强制脚本继续。假设用户当前登录,“is_logged_in”返回1或0.假设此函数没有漏洞。代码如下:重定向后PHP脚本可以继续吗?
<?
$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();
}
但我不知道这是连一个问题。
'header()'*设置标题*,它不以任何方式包含*停止当前脚本*。 – deceze 2013-03-19 14:37:57
debug.txt怎么没有进入“通过验证检查”。该脚本确实似乎正在终止。 – user2072710 2013-03-19 14:38:55
因为该命令无效? 'fwrite'需要*两个参数* ...! – deceze 2013-03-19 14:40:00