如何保证Cookie自动登录的安全性


一般自动登录,也就是“remember me”的功能都是利用Cookie实现的,这里就涉及到一个问题,Cookie里到底怎样存放数据才能保证系统的安全

看到很多简易的系统,直接保存了Username和Password Hash,这样子设计在自动登录时可以直接传入数据库验证。但缺点是容易暴露系统的加密算法。

请结合你的项目谈一谈Cookie自动登录的系统设计

网络安全 php

异世界D使徒 12 years, 2 months ago

将用户的认证信息保证在一个cookie中,具体如下:
1.cookie名:uid。推荐进行加密,比如MD5('站点名称')等。
2.cookie值:登录名|有效时间Expires|hash值。hash值可以由"登录名+有效时间Expires+用户密码(加密后的)的前几位+salt",salt是保证在服务器端站点配置文件中的随机数。
这样子设计有以下几个优点:
1.即使数据库被盗了,盗用者还是无法登录到系统,因为组成cookie值的salt是保证在服务器站点配置文件中而非数据库。
2.如果账户被盗了,用户修改密码,可以使盗用者的cookie值无效。
3.如果服务器端的数据库被盗了,通过修改salt值可以使所有用户的cookie值无效,迫使用户重新登录系统。
4.有效时间Expires可以设置为当前时间+过去时间(比如2天),这样可以保证每次登录的cookie值都不一样,防止盗用者窥探到自己的cookie值后作为后门,长期登录。

Mousai answered 12 years, 2 months ago

Your Answer