【问题标题】:Is such a token method reasonable?这样的token方式合理吗?
【发布时间】:2013-03-23 17:01:23
【问题描述】:

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

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

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

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

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

会话令牌保持不变,page_token 在每次页面重新加载后更改。

在所有其他页面上检查 session token 和 page_token 是否与 mysql 中的 token 相同。

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

谢谢

更新

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

但希望尽可能确定特定密码保护页面的访问者与输入正确用户名和密码的访问者相同。

接下来的问题

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');
}

【问题讨论】:

    标签: php mysql token


    【解决方案1】:

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

    在您检查用户和密码是否正确后,如果您不想检查每个页面加载登录详细信息,您可以创建一个会话变量来存储用户 ID 或类似的东西,这样您就可以使用它对于 is_loggedin() 函数

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多