关掉浏览器后,再次打开浏览器,记住用户登录状态是怎么实现的?
2015-12-31 00:00
513 查看
摘要: 关掉浏览器后,再次打开浏览器,记住用户登录状态是怎么实现的?摘自-知乎
呵呵,我的意思是隔很长时间后,再次打开网站,依然保持着登录的状态
不是指一次会话的情况下,保持用户状态
主要是求大大来指点一下这样做怎样不好,那样做又有神马问题
我理解主要是由两种方式
第一种:将用户ID和密码加密之后放在用户浏览器cookie里,设置一个很长的过期时间,每次登陆的时候,先解码,然后通过用户名密码验证用户
这种方法我总感觉如果加密做的不好的话,会把用户密码泄露出去
第二种:在服务器端保存用户的数据,让其与一个唯一的ID关联,然后浏览器端cookie保存这个随机的ID很长时间,下一次只要拿着这个ID过来,服务器在自己这边找一找看看能不能找到用户数据,找到了就将数据赋给session
这种方法需要服务器端保存一定的数据,我也不知道这种拿着一个ID就过来验证身份的方法是不是安全
大大们帮我分析一下,这两种做法的利弊
我现在感觉,保存id和密码在cookie里的方式只是省去了在服务器端保存数据的开销,没有神马其他的好处,是这样吗?
回答:
永远不要在cookie里存放任何形式的密码。
用第二种。
还是需要记录一类的唯一验证的东西,防止 cookie 欺骗,比如存储未公开数据库的 uid 的 MD5 加密,然后服务器读取验证,或者使用其他比较强悍的密码加密手段,比如我的 MD5( sha256( $password ) . $userid ),但还是有泄漏密码的危险,需要找到一个平衡点。。
刘诗诗 赞同
cookies千万不要放密码,加密的不可逆密码也不行,现在电脑的计算能力越来越强,利用穷举法就可以破解你的密码。
密码/权限信息等等千万不要保存在cookie里面.
cookie里面只保存用户的id和上次登陆时间和你觉得还需要的非敏感数据(当然它们需要使用可逆的加密算法来加密保证不被伪造). 然后服务器端根据用户然后在涉及敏感数据(比如付款,修改密码等,跟你的系统需求而定)的地方对长时间(例如:上次登陆距离现在超过了24小时)登陆的用户采取密码确认的方式来强制验证用户的身份.
不会放用户名密码的。我了解的方法是在cookie里种了一个自动登陆的piao据,失效时间较长,有可能是将你id,密码,登陆时间戳,私钥加密后做为cookie。也有可能加了你的登陆ip,这样别人盗取你的cookie也不会让你的信息丢失。
呵呵,我的意思是隔很长时间后,再次打开网站,依然保持着登录的状态
不是指一次会话的情况下,保持用户状态
主要是求大大来指点一下这样做怎样不好,那样做又有神马问题
我理解主要是由两种方式
第一种:将用户ID和密码加密之后放在用户浏览器cookie里,设置一个很长的过期时间,每次登陆的时候,先解码,然后通过用户名密码验证用户
这种方法我总感觉如果加密做的不好的话,会把用户密码泄露出去
第二种:在服务器端保存用户的数据,让其与一个唯一的ID关联,然后浏览器端cookie保存这个随机的ID很长时间,下一次只要拿着这个ID过来,服务器在自己这边找一找看看能不能找到用户数据,找到了就将数据赋给session
这种方法需要服务器端保存一定的数据,我也不知道这种拿着一个ID就过来验证身份的方法是不是安全
大大们帮我分析一下,这两种做法的利弊
我现在感觉,保存id和密码在cookie里的方式只是省去了在服务器端保存数据的开销,没有神马其他的好处,是这样吗?
回答:
永远不要在cookie里存放任何形式的密码。
用第二种。
还是需要记录一类的唯一验证的东西,防止 cookie 欺骗,比如存储未公开数据库的 uid 的 MD5 加密,然后服务器读取验证,或者使用其他比较强悍的密码加密手段,比如我的 MD5( sha256( $password ) . $userid ),但还是有泄漏密码的危险,需要找到一个平衡点。。
刘诗诗 赞同
cookies千万不要放密码,加密的不可逆密码也不行,现在电脑的计算能力越来越强,利用穷举法就可以破解你的密码。
密码/权限信息等等千万不要保存在cookie里面.
cookie里面只保存用户的id和上次登陆时间和你觉得还需要的非敏感数据(当然它们需要使用可逆的加密算法来加密保证不被伪造). 然后服务器端根据用户然后在涉及敏感数据(比如付款,修改密码等,跟你的系统需求而定)的地方对长时间(例如:上次登陆距离现在超过了24小时)登陆的用户采取密码确认的方式来强制验证用户的身份.
不会放用户名密码的。我了解的方法是在cookie里种了一个自动登陆的piao据,失效时间较长,有可能是将你id,密码,登陆时间戳,私钥加密后做为cookie。也有可能加了你的登陆ip,这样别人盗取你的cookie也不会让你的信息丢失。
相关文章推荐
- 创业的第一百天——2015最后一天
- 快速跳转Xcode沙盒 ZLGotoSandboxPlugin-Xcode
- Activity 生命周期图
- MyEclipse下Tomcat启动变慢的解决方法
- 页面引入easyui时候遇到的问题
- android 相关知识
- 通过Maven编译工程时 编码 GBK 的不可映射字符 错误
- day05-----------java 语言基础(基础语法)(传智视频)
- solrCloud异常
- 通过命令行安装Oracle weblogic
- 安装weblogic 的时候遇见的问题-此时不应该有XXX
- 吞吐量测试
- HBase 常用Shell命令
- Hbase常用操作(增删改查)
- 6大设计原则之2--里氏替换原则
- 6大设计原则之3--依赖倒置原则
- mycncart操作使用教程 - 模组
- mycncart操作使用教程 - 文章管理
- mycncart操作使用教程 - 语言设置
- mycncart操作使用教程 - 商品分类