php - 像亚马逊一样无休止的 PHP session (理论)

标签 php session

找不到此问题的重复项,所以这里是:

我有兴趣建立一个 php 网站,其帐户可以像亚马逊一样工作。我的意思是,当我去亚马逊时,我的 session 总是“登录”,但不是真的。该网站知道我是谁,我可以访问我保存的购物车数据和某些“不安全”的帐户操作,但每当我想做任何事情(例如查看我的订单或实际结帐)时,我仍然必须登录。

我在亚马逊上处于“未登录但有点登录”状态时查看了 cookie,我没有看到任何内容跳出来,但我猜测它们存储了某种允许该网站的标识符 cookie基于我的用户帐户启动 session ,但处于“未经身份验证”模式,其中大多数内容都受到限制,但不是全部。

所以我想知道是否有人对我的想法有任何提示或陷阱:

1 - 用户帐户都具有某种 MD5,该 MD5 是在创建/更新帐户时根据用户名和密码创建的。

2 - 每次对 session 进行身份验证时,它都会确保有一个/permanent/cookie 与此 md5 哈希一起存储。

3 - 当访问者加载页面时,如果没有事件 session 数据,它会检查 md5 cookie 并将用户基本的“未经身份验证”信息加载到与该 md5 匹配的 session 中,因此现在网站知道他们的姓名并他们保存的购物车等。

(有人可以尝试随机 md5 哈希来尝试加载不同的用户名/购物车从而获得“登录电子邮件”地址,这是否是一个问题?是否值得我花时间在 md5 检查上进行某种强力检测?)

4 - 当处于未经身份验证状态的用户尝试执行需要身份验证的操作时,将显示登录页面,并预先填写电子邮件/帐户名称框。然后在成功登录后重定向到请求的操作。

(如果没有 md5 cookie 或 md5 不好,只需扔掉 cookie 并显示站点“无用户”模式。)

想法?担忧?更好的想法?

最佳答案

为了做这样的事情,我建议设置一个加密的 cookie,您可以使用某个 salt 来读取它。 。在加盐/加密的 cookie 中,保存用户 ID 和登录日期,以便您可以设置时间限制来检查之间的差异,并确定是否允许他们访问某些 insecure网站的部分内容。

我真的觉得这是解决此类问题最有效的方法。将其他所有内容保存在数据库中,然后使用 cookie 保存的 ID 从数据库中获取信息(当然,在解密 cookie 之后),获取您想要的其余数据(购物车等)

希望这有帮助!

关于php - 像亚马逊一样无休止的 PHP session (理论),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34702107/

相关文章:

php - PHP(使用 Apache 或 Nginx)可以在 POST 请求完成之前检查 HTTP header 吗?

ASP.NET session 标识符

php - 将 mysql 结果存储到 $_SESSION[] 变量中

php - 从当前 session PHP 获取名字

php - CodeIgniter IE 没有正确存储 session

php - 服务器中的codeigniter oc_ prefex数据库问题

PHP - 如何让搜索引擎从一个日期搜索到另一个日期

php - 我可以在 stream_wrapper_register 中使用命名空间类吗?

javascript - 如何将其作为字符串而不是 html 元素返回?

mysqli_stmt_bind_result 上的 PHP 怪异段错误