我知道header('Location: ' . $_SERVER['HTTP_REFERER']);
有一些安全问题。但是我需要将用户带回他来自的页面。只是想了解我是否存储了用户来自cookie的页面,之后可能是登录使用cookie信息将用户重定向回页面?这听起来安全吗?如果你对我有更好的建议,就像在这里一样?谢谢。
答案 0 :(得分:1)
有多种方法可以做到这一点。我会做服务器端。
示例:
class Page
{
public function define()
{
empty( $_SESSION['SCRIPT_NAME'] ) && $_SESSION['SCRIPT_NAME'] = 'http://example.com'; // default page
in_array( $_SERVER['SCRIPT_NAME'], $this->defined()) && $_SESSION['RECOIL_PAGE'] = $_SERVER['REQUEST_URI']; // if the current page is in allowed list, make it recoil page (let user return to it)
}
public function defined()
{
return array(
'/index.php',
'/categories.php',
'/videos.php',
'/upload.php'
);
}
public function recoil()
{
header( 'Location: ' . $_SESSION['RECOIL_PAGE'] );
exit;
}
}
用法:
$this->page->define();
//要检查页面是否应设置为允许,反冲页面$this->page->recoil();
//将用户重定向到可能的反冲页面,如果不在列表中,则重定向到默认页面答案 1 :(得分:0)
不行,只是告知用户他被重定向回来,它总是在OAuth中使用,作为返回网址,记得在Facebook,Google或Twitter登录任何应用程序。
请确保您真的希望用户返回他来自的地方。
答案 2 :(得分:0)
我认为这种方法很安全。虽然我们的网站在登录后使用会话将用户重定向回上一页。它与使用cookie具有相同的效果。
使用$_SERVER["HTTP_REFERER"]
并不可靠。有时它可能包含无效值。所以不建议这样做。