文档章节

关掉浏览器后,再次打开浏览器,记住用户登录状态是怎么实现的?

Corwien
 Corwien
发布于 2015/12/31 10:52
字数 832
阅读 811
收藏 6
点赞 0
评论 0

呵呵,我的意思是隔很长时间后,再次打开网站,依然保持着登录的状态

不是指一次会话的情况下,保持用户状态

主要是求大大来指点一下这样做怎样不好,那样做又有神马问题

我理解主要是由两种方式

第一种:将用户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也不会让你的信息丢失。


© 著作权归作者所有

共有 人打赏支持
Corwien
粉丝 26
博文 144
码字总数 115164
作品 0
广州
程序员
网站免登陆时怎么实现的? 

@红薯 @彭博 很多人说利用cookie保存加密后的密码和用户ID,当再次访问网站时服务器提取cookie的用户ID和密码,如果通过验证,则不需要重新输入账号和密码。 oschina好像就是这么实现的。当登...

mj4738 ⋅ 2013/05/28 ⋅ 3

shiro实现APP、web统一登录认证和权限管理

先说下背景,项目包含一个管理系统(web)和门户网站(web),还有一个手机APP(包括Android和IOS),三个系统共用一个后端,在后端使用shiro进行登录认证和权限控制。好的,那么问题来了web...

HelloRookie ⋅ 2016/10/10 ⋅ 1

HTTP协议是无状态协议,怎么理解?

Http是一个无状态协议,同一个会话的连续两个请求互相不了解,他们由最新实例化的环境进行解析,除了应用本身可能已经存储在全局对象中的所有信息外,该环境不保存与会话有关的任何信息。 自...

疯狂的兔子 ⋅ 2015/03/05 ⋅ 0

shiro 怎样在Remember的情况 自动登录?

shiro 在浏览器关掉,然后再次打开访问网站的时候. Subject.isRemembered()=trueSubject.isAuthenticated=false 如果某些url是auth才能访问的那么就必须先login 如果密码没有经过加密是可以通...

caiw ⋅ 2014/06/07 ⋅ 1

Shiro的 rememberMe 功能使用指导(为什么rememberMe设置了没作用?)

问题 shiro中提供了rememberMe功能,它用起来是这样的 [java] view plaincopy UsernamePasswordToken token = new UsernamePasswordToken(loginForm.getUsername(),loginForm.getPassword())......

Jerry- ⋅ 2015/05/27 ⋅ 1

Session和Cookies的原理及代码实现

在浏览网页时,很多页面是需要登录的,但是我们知道HTTP协议是无状态协议,那么我们在网站的各个网页间跳转时,为什么不需要重新登录账号呢?这就是Session和Cookies的功劳了,接下来,让我们...

一根薯条 ⋅ 03/17 ⋅ 0

SessionID 的本质

一、客户端用cookie保存了sessionID 客户端用cookie保存了sessionID,当我们请求服务器的时候,会把这个sessionID一起发给服务器,服务器会到内存中搜索对应的 sessionID,如果找到了对应的 ...

小梅菜鸟 ⋅ 2012/04/26 ⋅ 0

如何实现“记住我的登录状态”的功能

如何实现记住我的登录状态? 开始是把账号和密码一起存放到浏览器中的cookie中,在每次访问时,实现账号和密码登录验证。但我觉得这种方法麻烦,而且存放了密码在cookie中,就算加密的,看起...

tngou ⋅ 2013/01/06 ⋅ 16

Http-Cookie机制及Cookie的实现原理

1. 为什么需要Cookie? HTTP是一种无状态的协议,客户端与服务器建立连接并传输数据,数据传输完成后,连接就会关闭。再次交互数据需要建立新的连接,因此,服务器无法从连接上跟踪会话,也无...

No_96 ⋅ 2017/12/17 ⋅ 0

求指教使用js在关闭浏览器时清除指定的cookie时所碰到的问题

前几天在做项目时有一个需求,客户端登录成功之后,如果关闭了浏览器,则再次打开浏览器并进入该网站时,则当前用户不再是已登录的状态。一开始我想差了,钻入了死胡同,只想着触发js中的onu...

挨踢旅行者 ⋅ 2014/07/26 ⋅ 2

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Centos7重置Mysql 8.0.1 root 密码

问题产生背景: 安装完 最新版的 mysql8.0.1后忘记了密码,向重置root密码;找了网上好多资料都不尽相同,根据自己的问题总结如下: 第一步:修改配置文件免密码登录mysql vim /etc/my.cnf 1...

豆花饭烧土豆 ⋅ 今天 ⋅ 0

熊掌号收录比例对于网站原创数据排名的影响[图]

从去年下半年开始,我在写博客了,因为我觉得业余写写博客也还是很不错的,但是从2017年下半年开始,百度已经推出了原创保护功能和熊掌号平台,为此,我也提交了不少以前的老数据,而这些历史...

原创小博客 ⋅ 今天 ⋅ 0

LVM讲解、磁盘故障小案例

LVM LVM就是动态卷管理,可以将多个硬盘和硬盘分区做成一个逻辑卷,并把这个逻辑卷作为一个整体来统一管理,动态对分区进行扩缩空间大小,安全快捷方便管理。 1.新建分区,更改类型为8e 即L...

蛋黄Yolks ⋅ 今天 ⋅ 0

Hadoop Yarn调度器的选择和使用

一、引言 Yarn在Hadoop的生态系统中担任了资源管理和任务调度的角色。在讨论其构造器之前先简单了解一下Yarn的架构。 上图是Yarn的基本架构,其中ResourceManager是整个架构的核心组件,它负...

p柯西 ⋅ 今天 ⋅ 0

uWSGI + Django @ Ubuntu

创建 Django App Project 创建后, 可以看到路径下有一个wsgi.py的问题 uWSGI运行 直接命令行运行 利用如下命令, 可直接访问 uwsgi --http :8080 --wsgi-file dj/wsgi.py 配置文件 & 运行 [u...

袁祾 ⋅ 今天 ⋅ 0

JVM堆的理解

在JVM中,我们经常提到的就是堆了,堆确实很重要,其实,除了堆之外,还有几个重要的模块,看下图: 大 多数情况下,我们并不需要关心JVM的底层,但是如果了解它的话,对于我们系统调优是非常...

不羁之后 ⋅ 昨天 ⋅ 0

推荐:并发情况下:Java HashMap 形成死循环的原因

在淘宝内网里看到同事发了贴说了一个CPU被100%的线上故障,并且这个事发生了很多次,原因是在Java语言在并发情况下使用HashMap造成Race Condition,从而导致死循环。这个事情我4、5年前也经历...

码代码的小司机 ⋅ 昨天 ⋅ 2

聊聊spring cloud gateway的RetryGatewayFilter

序 本文主要研究一下spring cloud gateway的RetryGatewayFilter GatewayAutoConfiguration spring-cloud-gateway-core-2.0.0.RC2-sources.jar!/org/springframework/cloud/gateway/config/G......

go4it ⋅ 昨天 ⋅ 0

创建新用户和授予MySQL中的权限教程

导读 MySQL是一个开源数据库管理软件,可帮助用户存储,组织和以后检索数据。 它有多种选项来授予特定用户在表和数据库中的细微的权限 - 本教程将简要介绍一些选项。 如何创建新用户 在MySQL...

问题终结者 ⋅ 昨天 ⋅ 0

android -------- 颜色的半透明效果配置

最近有朋友问我 Android 背景颜色的半透明效果配置,我网上看资料,总结了一下, 开发中也是常常遇到的,所以来写篇博客 常用的颜色值格式有: RGB ARGB RRGGBB AARRGGBB 这4种 透明度 透明度...

切切歆语 ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部