我看到youtube之类的网站的登录cookie有3年之久,换了ip也能同样不退出。我现在是根据密码的MD5值加ip来生成token的,想问一下应该根据什么样的条件来生成cookie的token比较好,现在的弊端是换了ip就要重新登录,在家和在公司切换很麻烦
我看到youtube之类的网站的登录cookie有3年之久,换了ip也能同样不退出。我现在是根据密码的MD5值加ip来生成token的,想问一下应该根据什么样的条件来生成cookie的token比较好,现在的弊端是换了ip就要重新登录,在家和在公司切换很麻烦
既然是cookies,那是保存本地的,跟IP没有多大关系。如果你cookie做判断登录,用户名+token+时间戳。
token的值其实随意,只要你去服务器上面可以组装判断到就可以了,比如说token=md5(用户名+密码+时间戳),密码为数据库的值。
只要保证服务器可以通过cookies上除token以外的值组装得到token即可。
2 回答1.4k 阅读✓ 已解决
1 回答1.1k 阅读✓ 已解决
2 回答858 阅读✓ 已解决
1 回答1k 阅读✓ 已解决
2 回答914 阅读
1 回答897 阅读
1 回答828 阅读
不是单纯的加密就可以了,这个里面需要很重要的cookie被篡改的问题,下面的一个示例是我见过的一个系统是这么设计的。
CookieValue = Base64(创建时间+ "@" + 过期时间+ "@" + 用户名+ "#" + md5(创建时间+ "@" + 过期时间+ "@" + 用户名 + solt))
说明:
1:加不加ip都可以,看实际需求。
2:这里使用Base64,你可以换成其他的可逆的加密方式。(Base64严格来说,不能算是一种加密方式,只能说是一种编码的方式。)
3:solt是加盐字符串,比如后台保存的solt="578u90o%^&*";
4:保存过期时间,用户的登录不依赖cookie的生命值,依赖你设置的这个过期时间,你可以把cookie的生命值设置的很长。
怎么防止篡改的:
即使用户可以解密出创建时间+ "@" + 过期时间+ "@" + 用户名+ "#" + md5(创建时间+ "@" + 过期时间+ "@" + 用户名 + solt)的值,因为不知道solt的值,即使用户篡改,后台也能根据md5的生成的防止篡改的验证码判断出被修改过。如果
用户solt的值也知道了,知道怎么生成防止篡改的验证码,你后台只有改下solt的值, 用户就需要重新登录了。
后台判断用户是否登录的流程,给出一个大概的流程。
如果有什么不对的地方,欢迎指出。