Session验证用户登录的大致过程

本文详细介绍了Web应用中Session验证用户登录的过程,包括用户提交表单、服务器验证、存储用户信息到Redis、设置带有签名的Cookie、后续请求中的SessionID验证以及使用Redis获取用户对象。同时提到了信息摘要算法在防止Cookie篡改中的作用。
摘要由CSDN通过智能技术生成

1. 用户提交包含用户名和密码的表单,发送HTTP请求。

2. 服务器验证用户发来的用户名密码。

3. 如果正确则把当前用户名(通常是用户对象)存储到redis中,并生成它在redis中的ID。 这个ID称为Session ID,通过Session ID可以从Redis中取出对应的用户对象, 敏感数据(比如authed=true)都存储在这个用户对象中。

4. 设置Cookie为sessionId=xxxxxx|checksum并发送HTTP响应, 仍然为每一项Cookie都设置签名。

 

signedCookie

计算机领域有个名词叫 签名,专业点说,叫 信息摘要算法。

比如,我们现在面临着一个菜鸟开发的网站,他用 cookie 来记录登陆的用户凭证。相应的 cookie 长这样:dotcom_user=alsotang,它说明现在的用户是 alsotang 这个用户。如果我在浏览器中装个插件,把它改成dotcom_user=ricardo,服务器一读取,就会误认为我是 ricardo。然后我就可以进行 ricardo 才能进行的操作了。

之前 web 开发不成熟的时候,用这招甚至可以黑个网站下来,把 cookie 改成 dotcom_user=admin 就行了。

现在是怎么保证不被篡改呢?答案很简单,签个名。

假设我的服务器有个秘密字符串,是 this_is_my_secret_and_fuck_you_all,我为用户 cookie 的 dotcom_user 字段设置了个值 alsotang。cookie 本应是{dotcom_user: 'alsotang'}这样的。

而如果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值