如果一个持久且恶意的用户幸运并加载了你的一个 秘密文件进入浏览器,而那个秘密文件包含很多 仅在文件被重定向时定义的变量,您做什么?
这是login.php的验证脚本,它是我的 原始 脚本
if (!isset($_POST['email']) && !isset($_POST['pwd'])) {
header ('Location: http://localhost/grace/verify/login.php');
exit;
}
// connect to database
$verify = 'SELECT pwd FROM users WHERE email = ?';
// query
if ($password == $storedPwd) {
$_SESSION['verified'] = 'yay!';
$_SESSION['start'] = time();
session_regenerate_id();
header ("Location: $redirect");
exit;
} else {
$error = 'Invalid Email or password';
}
可能有很多其他方法可以执行相同的脚本,但在我的方案中,为了解决我的问题,解决方案是我在下面的答案中的答案。
答案 0 :(得分:-1)
好的,很多读过这篇文章的人甚至懒得阅读我的剧本,我会澄清我的问题并回答我自己的问题。
如果用户说,她很幸运,并加载了一个秘密文件,例如authenticate.php
,其中只有在从{{{}等其他页面重定向时才定义变量。 1}}。所以我的解决方案是使用login.php
。
$_SERVER['HTTP_REFERER']
这将确保没有人可以直接将您的秘密文件加载到浏览器中。