- 浏览: 64446 次
- 性别:
- 来自: 四川
-
最新评论
这个功能简直就是一个安全隐患,我觉得并不是所有的程序员都知道怎么设计这个事。一般的设计 是——一时用户勾选了这个功能,系统会生成一个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的后来登录用户挤掉之前的登录用户这样的功能。
发表评论
-
struts2 中获取 web资源的方式
2016-01-08 17:02 547在struts2中获取 web资源的方式大致可分为获取扩展 ... -
sql server、db2、oracle 存储过程动态sql语句示例
2015-01-31 19:00 1850Oracle CREATE OR REPLACE PRO ... -
ie9 中出现不明的异常(参数是必选项 (Argument not optional)、尚未实现)等
2015-01-27 23:57 1321<script type="text/jav ... -
SAXParseException: The content of element type "configuration" must match
2014-09-15 23:57 1981在mybatis的配置文件中新增加<databaseI ... -
java.lang.ClassNotFoundException: Cannot find class: DB_VENDOR
2014-09-15 23:45 2028在mybatis 中使用databaseIdProvide ... -
spring mvc3 + fastjson 转换 REST 参数以及输出
2014-03-27 00:16 4275spring 3可以支持Rest风格参数,其内置了jack ... -
eclipse中编辑log4j 的xml配置文件时,自动提示
2014-03-27 00:05 904方法1. 配置log4j.dtd文件: Windows - ... -
java json 转换之 Jackson 框架
2013-08-01 21:50 1186转自:http://www.cnblogs.com/hooj ... -
eclipse/myeclise 自定义注释中的变量名称
2013-07-01 23:18 982eclipse/myeclipse中自带了 ... -
Eclipse Class Decompiler——Java反编译插件
2012-11-08 22:41 1253Eclipse Class Decompiler,整 ... -
struts+spring+hibernate整合问题解决方法 陆续更新中....
2009-01-01 10:33 895在整合ssh过程中出现的问题和解决方法: 一、 严重: Ser ... -
DWR通过Annotation与spring整合
2009-01-21 22:05 674DWR 2.0 增加了一个很有趣的新特性,Annotat ... -
div嵌套页面 div加载页面 (其中获取目标页面的内容是用dwr框架连接java程序做的)
2009-03-15 16:58 665前段时间因为有需要,要在div中加载一个页面。但是以前没做过, ... -
tapestry autocomplete 更改样式及定位
2009-07-09 19:02 731版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文 ... -
Java中的main()方法详解
2009-07-12 16:23 661源文作者:leizhimin 源文链接:http:/ ... -
tapestry5 集成 spring 的事务管理
2009-07-22 15:43 609说明:使用的是tapestry5.1.0.5 和spring ... -
tapestry5 布局 参数的处理
2009-07-23 17:24 460<?xml version="1.0" ... -
tapestry不支持 等html特殊符号的解决方法
2009-07-23 17:34 578在使用tapestry时,偶然发现使用 &a ... -
WebService大讲堂之Axis2(1):用POJO实现0配置的WebService
2009-07-28 15:01 440转自:http://space.itpub.net ... -
WebService大讲堂之Axis2(2):复合类型数据的传递
2009-07-28 15:25 532转自:http://space.itpub.net/12921 ...
相关推荐
在Android应用开发中,"登录界面记住密码功能"是一个常见的用户友好特性,它允许用户在登录时选择保存他们的账户凭证,以便在未来的登录过程中自动填充,从而提高用户体验。这一功能的实现涉及到多个技术层面,包括...
在C#编程中,"记住密码"功能是一个常见的用户交互特性,主要目的是为了方便用户在下次登录时无需再次输入他们的密码。实现这个功能涉及到几个关键点,包括数据存储、安全性和用户界面设计。下面我们将详细探讨这些...
记住密码功能必须遵循最佳安全实践,比如只在安全连接下存储,定期更新加密算法,避免明文存储,以及提供用户清除记住密码的选项。 综上所述,实现“delphi unigui登录界面记住用户密码”涉及多个方面,包括UI设计...
首先,我们要理解记住密码功能的基本原理。通常,当用户勾选"记住密码"选项时,应用会将用户名和加密后的密码存储在设备的安全存储区域,如SharedPreferences或者KeyStore。SharedPreferences是一个轻量级的持久化...
在Android应用开发中,"记住...总的来说,这个源码资源提供了实现Android登录界面记住密码功能的完整流程,涵盖了数据存储、UI设计、安全策略和事件处理等多个方面,对于Android开发者来说是一个很好的学习和参考实例。
2. **XML布局文件**:在`Android 登录界面记住密码功能源码`中,登录界面的布局文件(如`activity_login.xml`)会包含两个EditText(一个用于输入用户名,另一个用于输入密码)以及一个CheckBox用于勾选“记住密码”...
- 在Android Studio中导入源码,使用模拟器或真实设备运行应用,测试记住密码功能是否正常工作。确保在各种场景下,如首次登录、再次打开应用、清除数据后,功能表现正确。 总结,这个压缩包提供的源码实例是关于...
这些工具可以帮助设计者验证设计的功能正确性,并将其转化为可编程逻辑器件(如FPGA或CPLD)上的配置。 《基于VHDL的数字密码锁的设计与实现》和《基于VHDL的智能密码锁的设计与实现》这两份文档可能会探讨更复杂的...
同时,为了提高用户体验,可以加入自动保存和记住密码的功能,但这些功能应遵循最佳安全实践,如使用Keychain存储敏感信息。 7. **测试与优化** 在实现以上步骤后,进行多轮测试,确保在不同场景下密码保护功能都...
在Android应用开发中,登录界面是用户接触应用的第一步,其中的“记住密码”功能是一项常见且重要的用户体验设计。这个功能允许用户选择保存他们的账户信息,以便下次打开应用时自动填充,省去了反复输入的麻烦。...
随着人们生活水平的提高,密码锁作为家庭安全守护的功能变得越来越重要,相比于传统的机械锁,它具有一些独特的优势,如安全性高、防盗性能好、无需携带钥匙,只需记住密码即可。 本文使用MAX+PLUS II作为软件平台...
这样,浏览器在加载页面时无法识别它是密码框,从而不会尝试记住密码。例如: ```html ``` 2. **初始化时清空密码框**: 可以在页面加载时通过JavaScript将密码框的值设为空。这有助于确保即使浏览器已经记住...
此外,操作简便是电子密码锁的又一大优点,用户无需携带钥匙,只需记住密码即可实现开锁,从而解决了携带多把钥匙的烦恼。 从技术层面来看,电子密码锁的设计与实现,不仅包括了硬件部分的精确控制,还融合了软件...
在登录功能中,可以用来持久化用户的登录状态和密码,实现记住密码和自动登录功能。 需要注意的是,由于压缩包中的代码可能需要自行调整才能运行,开发者需要具备一定的Android编程基础,理解并调试代码。对于初学...
这是另一种为了提高用户体验而设计的功能,它允许用户在成功登录后选择是否记住密码,以便下次访问时自动填充。这通常通过存储用户凭据(如用户名和哈希后的密码)在本地浏览器中实现,但需要注意的是,这种便利性...
在实现过程中,你可能会遇到的问题包括:如何正确处理用户输入、如何有效地连接和操作数据库、如何确保密码的安全性以及如何优化界面交互。对于初学者,了解并掌握这些概念是至关重要的。 虽然提供的资源可能不完整...
该设计使用单片机作为主要器件,具有高安全性、低成本、低功耗、易操作、记住密码即可开锁等优点。 在设计中,AT89S51单片机是主要器件,它具有高性能、低功耗、低成本等特点。LCD1602显示屏用于显示密码正确或错误...
在PHP编程中,实现“记住用户名和密码”的功能通常涉及到几个关键的技术:MySQL数据库存储、Cookie和Session管理,以及HTML和CSS的交互设计。以下是对这些知识点的详细说明: 1. **MySQL数据库存储**: 当用户成功...
此外,Shiro还提供了记住密码的功能,通过Cookie实现用户的持久化登录,提高用户体验。 项目文件"shiro-test"可能包含的是Shiro相关的测试代码,用于验证Shiro的安全配置是否正常工作,例如用户登录、权限检查、...
9. 电子密码锁的发展趋势:电子密码锁代替传统机械式密码锁是必然趋势,具有安全性高、成本低、功耗低、易操作、记住密码即可开锁等优点。 10. 系统设计总图:是本设计的总体设计方案,包括硬件组成和软件设计等...