Cookies存储用户登录信息问题
Cookies存储用户登录信息,代替Session可以实现负载平衡多台服务器间session不共享问题,但Cookies保存在浏览器端本身是有很大安全问题的,可以通过下面方法实现模拟Session的方法来保障安全:
1、用户提交登陆表单并且服务器端接收
2、确认密码登陆无误以后生成一个sid(SessionId)和CryptedCode(已加密的信息)
3、将步骤2的数据存进数据库或者nosql(同时保存SessionId的有效时间等信息,模拟Server自带Session机制)
4、服务器将CryptedCode作为Cookie返回给客户端。
5、客户端请求相关资源的时候连同cookie提交服务器端
6、 服务器端将相关信息进行加密得到_CryptedCode与步骤2的CryptedCode做对比,如果相同,则放行请求,并从数据库中取出SessionId进行操作。
几个说明
1.步骤4也可以将SessionId作为cookie返回客户端,在步骤6中通过SessionId取出数据库存好的CryptedCode与这次请求加密好的CryptedCode做比对,相同则放行。
2.为了防止客户端伪造、盗用cookie,因此需要生成一个CryptedCode,步骤6里的相关信息可以是Cookie的时间戳、UserAgent信息、用户名、服务器存储的密码盐等特征信息。生成算法任选,安全性高一点的可以直接选择多次加密。
参考资料: