无法找到此问题的副本,所以这里是:
我有兴趣建立一个像亚马逊那样工作的PHP网站。我的意思是,当我去亚马逊时,我的会话总是"登录"但不是真的。该网站知道我是谁,我可以访问我保存的购物车数据和某些“不安全”的信息。帐户操作,但每当我想做任何事情,如查看我的订单,或实际检查我必须登录。
我在&#34中查看了Cookie;没有登录但是有点登录"亚马逊上的状态,我没有看到任何突然出现在我身上,但我猜他们存储了某种标识符cookie,允许网站根据我的用户帐户开始会话,但是在未经验证的情况下#34 ;模式,大多数事情都受到限制,但不是全部。
所以我想知道是否有人对我的想法有任何提示或陷阱:
1 - 创建/更新帐户时,用户帐户都有某种MD5根据用户名和密码创建。
2 - 每次会话通过身份验证时,都会确保使用此md5哈希存储/ permanent / cookie。
3 - 如果访问者在没有活动会话数据的情况下加载页面,它会检查md5 cookie并加载用户基本"未经身份验证的"信息到与md5匹配的会话,所以现在网站知道他们的名字和他们保存的购物车等。
(是否有人可以尝试随机md5哈希尝试加载不同的用户名/购物车,从而获得"登录电子邮件"地址?是否值得花些时间放置某种蛮力?检测md5检查?)
4 - 当处于未经身份验证状态的用户尝试执行需要身份验证的操作时,将显示登录页面,并预先填写电子邮件/帐户名称框。然后在成功登录后重定向到请求的操作。
(如果没有md5 cookie或者md5很糟糕,只需扔掉cookie并显示网站"没有用户"模式。)
思考?关注?更好的想法?
答案 0 :(得分:5)
为了做这样的事情,我建议设置一个加密的cookie,你可以用某个salt
来阅读。在salted / encrypted cookie中,保存用户ID和登录日期,这样您就可以设置时间限制来检查两者之间的差异,并确定是否允许他们访问那些特定的insecure
部分该网站。
我真的觉得这是最有效的方式来做这样的事情。保存数据库中的所有其他内容,只需使用cookie保存的ID从数据库中获取信息(当然,在解密cookie之后),获取所需的其他数据(购物车等)
希望这有帮助!