这种令牌方法合理吗?

时间:2013-03-23 17:01:24

标签: php mysql token

成功登录后,创建令牌,在mysql中记录。创建的令牌进一步传递会话。

首先是受密码保护的页面,检查会话令牌是否与mysql中的令牌相同。

其他受密码保护的页面只能通过第一页(例如,称为菜单)。

在第一个受密码保护的页面中创建额外的令牌,称为page_token(也在mysql中记录?;有没有更好/更快的方式没有mysql?)可能是这样的:

(isset($_SESSION) == $_SESSION['page_token']))

会话令牌保持不变,每页重新加载后page_token都会发生变化。

在所有其他页面上检查会话令牌和page_token是否与mysql中的令牌相同。

这样的方法会好吗?可能存在更好的方法(某些链接)?

谢谢

更新

在线搜索。了解上述方法并不合理。足以检查会话登录。

但是要尽可能确保特定密码保护页面的访问者是输入正确用户名和密码的访问者。

接下来的问题

1)您如何看待本教程http://wblinks.com/notes/secure-session-management-tips

2)您如何看待代码?普通用户可以在一个会话期间更改以下任何HTTP吗?

if( $_SESSION['loggedin'] != 1 or $_SESSION['time_when_form_submitted'] > date("Y-m-d H:i:s")
or
$_SESSION['_USER_LOOSE_IP'] != long2ip(ip2long($_SERVER['REMOTE_ADDR']) & ip2long("255.255.0.0"))
or
$_SESSION['HTTP_USER_AGENT'] != $_SERVER['HTTP_USER_AGENT']
or
$_SESSION['HTTP_ACCEPT_LANGUAGE'] != $_SERVER['HTTP_ACCEPT_LANGUAGE']
or
$_SESSION['HTTP_ACCEPT'] != $_SERVER['HTTP_ACCEPT']
or
$_SESSION['HTTP_ACCEPT_ENCODING'] != $_SERVER['HTTP_ACCEPT_ENCODING']
 ) {
header('Refresh: 0; URL=http://www.domain.com/login.php');
}

1 个答案:

答案 0 :(得分:0)

如果您想在登录表单中使用令牌,我记得我在这里看了一个很好的教程http://www.youtube.com/watch?v=nNU1CYryF_8

在检查用户和传递是否正确后,如果您不想检查每个页面加载登录详细信息,您可以创建一个会话var,它将存储用户ID或类似的东西,以便您可以使用for is_loggedin()function