简述
说到cookie,我想前端开发都有听说过吧,cookie的本质就是用来存储数据的,但不能存太多数据。 cookie大多数是用来辨别用户身份的,但不止这一种用途,这就要看具体项目了。 今天我们要说的就是怎么通过cookie,能让服务器知道你就是某用户。 大家都知道http是无状态的,每次请求都是独立的,是没办法直接判断某个请求是否是同一个用户发起, 这时候cookie就起作用的,当用户第一次登陆这个网站的时候可以在响应头设置一个cookie, 下次用户在发起http请求就会自动带上这个cookie,服务器就可以通过这个cookie来找到这个用户的信息。 下面我们来看一下常用的几种验证用户身份的方法
1、使用userId 作为登录用户凭证
在登录成功的时候服务器在cookie存入一个userId,下次这个用户再发http请求的时候 把这个userId带上就可以知道这个用户是谁了。但是这种方法非常不安全, 如果单纯的用一个userId作为凭证,容易被黑客盗用,因为只有一个userId作为凭证,在任何电脑只要把cookid中的userId改成别人的userId就可以直接模拟用户了
2、userId + 签名(sign) 作为登录用户凭证
通过上面知道userId 可以用作用户的登录凭证 单纯的通过userId 判断用户这是非常不安全的。 所以在登录成功的时候服务器在cookie存入一个userId和一个签名值。 userId + 签名(sign是通过userId算出的加密串,是不可逆的),这样身份就不容易盗用, 当用户向服务器发请求的时候,会把userId和签名一起发送给后台, 只有后台验证userId和签名是匹配的就可以判断就是当前用户,而不是别人
3、使用sessionId 作为登录用户凭证
userId + 签名(sign) 作为登录用户凭证,还是会把用户信息曝露出来, 还有一种方法,在用户登录的时候服务器在cookie中存一个sessionId(通过userId算出的加密串),并把这个用户的信息和这个sessionId关联, 用户每次登录的时候带上这个sessionId就可以了, 后台通过这个sessionId就可以查到关联的用户信息