在每个页面请求上更改会话是否重要?

时间:2011-01-25 00:40:51

标签: php security session csrf

当用户在另一个窗口/选项卡上打开另一个页面时,会导致冲突。那么如何防止这些冲突呢?一种方法是为每个页面设置相同的会话。每次用户注销/登录会话时都会重新生成。

<?php
//every page sets its own session if its not ajax so that it dont expire
if(is_ajax()){
$_SESSION['token'] = md5(rand());
}

echo '<div id="token">'.$_SESSION['token'].'</div>';
?>

令牌将从div.token传递,以通过jquery执行ajax请求。但是当用户打开另一个选项卡时,会设置新会话,然后另一个页面返回“无效请求”错误。

1 个答案:

答案 0 :(得分:1)

打开多个页面或标签页不应干扰会话。如果确实如此,你可能会在会话中投入太多。

你在会话中存储了什么?听起来你可能在会话中存储了属于URL的内容。

编辑:看到您的编辑后,您可能想查看此问题的最佳答案:

PHP - CSRF - How to make it works in all tabs?