`
sbfivwsll
  • 浏览: 60172 次
  • 性别: Icon_minigender_1
  • 来自: 四川
社区版块
存档分类
最新评论

“记住密码“功能的正确设计

阅读更多

这个功能简直就是一个安全隐患,我觉得并不是所有的程序员都知道怎么设计这个事。一般的设计 是——一时用户勾选了这个功能,系统会生成一个cookie,cookie包括用户名和一个固定的散列值,这个固定的散列值一直使用。这样,你就可以在所有的设备和客户上都可以登录,而且可以有多个用户同时登录。这个并不是很安全。下面是一些更为安全的方法供你参考:

 

1)在cookie中,保存三个东西——用户名登录序列登录token

用户名:明文存放。
登录序列:一个被MD5散列过的随机数,仅当强制用户输入口令时更新(如:用户修改了口令)
登录token:一个被MD5散列过的随机数,仅一个登录session内有效,新的登录session会更新它

2)上述三个东西会存在服务器上,服务器的验证用户需要验证客户端cookie里的这三个事。

3)这样的设计会有什么样的效果,会有下面的效果,

a)登录token是单实例登录。意思就是一个用户只能有一个登录实例。

b)登录序列是用来做盗用行为检测的。如果用户的cookie被盗后,盗用者使用这个cookie访问网站时,我们的系统是以为是合法用户,然后更新“登录token”,而真正的用户回来访问时,系统发现只有“用户名”和“登录序列”相同,但是“登录token” 不对,这样的话,系统就知道,这个用户可能出现了被盗用的情况,于是,系统可以清除并更改登录序列 登录token,这样就可以令所有的cookie失效,并要求用户输入口令。并给警告用户系统安全。

4)当然,上述这样的设计还是会有一些问题,比如:同一用户的不同设备登录,甚至在同一个设备上使用不同的浏览器保登录。一个设备会让另一个设备的登录token登录序列失效,从而让其它设备和浏览器需要重新登录,并会造成cookie被盗用的假象。所以,你在服务器服还需要考虑- IP 地址

a) 如果以口令方式登录,我们无需更新服务器的“登录序列”和 “登录token”(但需要更新cookie)。因为我们认为口令只有真正的用户知道。

b) 如果 IP相同 ,那么,我们无需更新服务器的“登录序列”和 “登录token”(但需要更新cookie)。因为我们认为是同一用户有同一IP(当然,同一个局域网里也有同一IP,但我们认为这个局域网是用户可以控制的。网吧内并不推荐使用这一功能)。

c) 如果 (IP不同 && 没有用口令登录),那么,“登录token” 就会在多个IP间发生变化(登录token在两个或多个ip间被来来回回的变换),当在一定时间内达到一定次数后,系统才会真正觉得被盗用的可能性很高,此时系统在后台清除“登录序列”和“登录token“,让Cookie失效,强制用户输入口令(或是要求用户更改口令),以保证多台设备上的cookie一致。

我觉得这是一种不错的方案,cookies被盗的假象甚至可以“弄巧成拙”地实现——QQ的后来登录用户挤掉之前的登录用户这样的功能。

分享到:
评论

相关推荐

    基于单片机protues仿真的智能存包系统电子密码锁系统设计(仿真图、源代码、设计说明)

    该控制系统可以每次随机生成四位数的密码,并显示在LCD上,用户记住改密码后进行输入并核对是否正确。系统设计了相关的硬件电路和相关应用程序。硬件电路主要包括STC89C52单片机最小系统,LCD显示电路、LED指示电路...

    四位单片机液晶显示密码锁,存包系统密码锁设计-电路方案

    该控制系统可以每次随机生成四位数的密码,并显示在LCD上,用户记住改密码后进行输入并核对是否正确。系统设计了相关的硬件电路和相关应用程序。硬件电路主要包括STC89C52单片机最小系统,LCD显示电路、LED指示电路...

    Android开发(移动终端设计)大作业

    图1登录页:输入正确的账号密码并勾选“已阅读并同意服务条款..”方可登录成功,也可勾选记住密码,在下一次登陆时无需输入账号密码。 图2注册:输入新的(不存在的)账号并且两次密码输入一致方可注册成功。 图3...

    多功能充值消费一体机设计( MINISTM32 +RFID程序+设计说明等)-电路方案

    消费者拿到卡后需要记住自己的卡号,因为若是自己的卡不慎丢失了需要输入卡号和密码才能挂失和解挂。 (4)挂失/解挂 消费者进入挂失/解挂界面,输入卡号后按确定,再输入6位密码后按确定,接着选择挂失或者解挂,...

    java毕设课设基于Web物业管理系统项目源码+项目讲解+论文文档+数据库sql文件

    登录时可以自主选择是否记住密码,若登录环境相对安全,记住密码更加方便日后的使用。就登录本身而言,系统所有用户的登录界面一致。系统需要根据输入的信息进行身份识别,通过后进入相对身份权限的系统主页面中。 ...

    免费自助链接导航无限制版 v1.0.zip

    本人时间有限,本程序的页面是山寨自别的网站,程序为自己设计,在此向大家声明。 希望各位大哥高抬贵手,不要把小弟的作品改头换面成你的作品!   注意事项 1,请确保你的IIS配置正确,如果IIS搞不定,最好传到...

    【毕业设计】STM32 mini板+RFID开源设计的充值消费一体机-电路方案

    消费者拿到卡后需要记住自己的卡号,因为若是自己的卡不慎丢失了需要输入卡号和密码才能挂失和解挂。 (4)挂失/解挂 消费者进入挂失/解挂界面,输入卡号后按确定,再输入6位密码后按确定,接着选择挂失或者解挂,...

    网吧语音服务大师 v8.2.zip

    8、次服务端登录输入密码时,增加记住密码功能,加快登录速度。 9、顾客购买商品消息发送到主服务端,不需要点击信息,右侧自动显示最新的找零信息,不用担心找错零钱。 10、歌曲录入后,没有设置允许自动播放的...

    51单片机电子锁-电路方案

    电子锁只需记住一组密码,无需携带金属钥匙,免除了人们携带金属钥匙的烦恼,而被越来越多的人所欣赏。电子锁的种类繁多,例如数码锁,指纹锁,磁卡锁,IC卡锁,生物锁等。但较实用的还是按键式电子密码锁。 由于...

    金老师链接自助交换系统

    1,请确保你的IIS配置正确,如果IIS搞不定,最好传到虚拟主机进行测试。 2,安全起见,数据库需要改名字,改的复杂一点,在/inc/conn.asp 和/admin/conn.asp两个地方改 3,后台目录admin也可以改成你能记住的 本...

    J2EE汽车租赁系统

    还有就是删除用户留言信息时,首先必须先查看用户的留言信息然后记住起留言的编号,然后再进入删除留言信息模块输入编号才能删除,这样会给管理员造成很大的不便。 我们可以在用户留言信息的后面直接加入一个删除...

    Solid_Explorer_Full_v2.7.16_build_200193.apk

    这是Solid Explorer文件和Cloud Manager。...正确的“最近文件”实现,显示了按时间间隔分组的任何位置的最近修改的文件 删除了旧的“最近的文件”部分 添加了“文档”集合 解决了圆形缩略图的问题

    DES数据加密

    又如,dbms的一些软件包总是包含一些加密方法以使复制文件这一功能对一些敏感数据是无效的,或者需要用户的密码。所有这些加密算法都要有高效的加密和解密能力。 幸运的是,在所有的加密算法中最简单的一种就是...

    金老师链接自助交换系统源码v1.0

    本人时间有限,本程序的页面是山寨自别的网站,程序为自己设计,在此向大家声明。希望各位大哥高抬贵手,不要把小弟的作品改头换面成你的作品! 注意事项 1,请确保你的IIS配置正确,如果IIS搞不定,最好传到虚拟...

    iSee视频监控 v5.2

    回放时可进行图片抓拍功能,回放时文件备份功能、文件剪辑功能。 可进行远程监控,远程控制云镜、色彩、手动录像、布撤防、重启计算机等控制工作。 支持现今最大容量的硬盘,并支持安装多个大容量的硬盘。 ...

    教育技术培训教程集中学习笔记.doc

    请记住自己修改后的密码,修改后可以尝试退 出平台,重新登录以确认密码。 第二课时 热身活动2:阅读课程信息 为了你能对本课程及本次培训有基本的了解,以保证后续学习的顺利进行,请你详细阅 读课程提供的相关信息...

    上海电机学院C语言实训答案

    现场共有三个目击者,但都没有记住车号,只记下车号的一些特征。甲说:牌照的前两位数字是相同的;乙说:牌照的后两位数字是相同的,但与前两位不同;丙是个数学家,他说,四位车号刚好是一个整数的平方。请根据以上...

    Python(面向对象编程语言) v3.4.0.zip

    蟒蛇,巨蛇 ),是一种面向对象的解释性的计算机程序设计语言,也是一种功能强大而完善的通用型语言,已经具有十多年的发展历史,成熟且稳定。Python 具有脚本语言中最丰富和强大的类库,足以支持绝大多数日常应用。 ...

    虚拟Windows资源管理器V3.8

    如果你的资源管理器的文件夹选项中隐藏受保护的操作系统文件, 那么你在搜索系统目录时将搜索不到这些文件,此时文件夹大小也不正确了. 2.程序在创建SD和SF文件时是用IShellFolderObject来搜索的,所以速度可能...

    Visual C++ 2005入门经典--源代码及课后练习答案

    他曾在IBM工作多年,能使用多种语言进行编程(在多种机器上使用汇编语言和高级语言),设计和实现了实时闭环工业控制系统。Horton拥有丰富的教学经验(教学内容包括C、C++、Fortran、PL/1、APL等),同时还是机械、加工...

Global site tag (gtag.js) - Google Analytics