鉴于MSDN明文密码问题的曝光,各个网站都在为本身忽视网络安全在进行反思,也有部分无耻网站开始利用这个名单在增长本身的注册用户,真是机遇与风险并存。对了咱们来讲,用户也会根据这个事件提升对各个软件系统的安全要求,之后作软件系统安全性也是一个须要考虑的范畴,值得你们借鉴。 原文地址:http://coolshell.cn/articles/5353.html 正文: Web上的用户登陆功能应该是最基本的功能了,但是在我看过一些站点的用户登陆功能后,我以为颇有必要写一篇文章教你们怎么来作用户登陆功能。下面的文章告诉你们这个功能可能并无你所想像的那么简单,这是一个关系到用户安全的功能,但愿你们能从下面的文章中能知道什么样的方法才是一个好的用户登陆功能。如下内容,转载时请保持原文一致,并请注明做者和出处。 用户名和口令首先,咱们先来讲说用户名和口令的事。这并非本站第一次谈论这个事了。如何管理本身的口令让你知道怎么管理本身的口令,破解你的口令让你知道在现代这样速度的计算速度下,用穷举法破解你的口令可能会是一件很轻松的事。在这里我想告诉从开发者的角度上来作设计这个用户名和口令的事。下面一几件规则:
因此,咱们每一个页面都须要对用户的身份进行认证。固然,咱们不可能让用户在每一个页面上输入用户名和口令,这会让用户以为咱们的网站至关的SB。为了实现这一功能,用得最多的技术就是浏览器的cookie,咱们会把用户登陆的信息存放在客户端的cookie里,这样,咱们每一个页面都从这个cookie里得到用户是否登陆的信息,从而达到记录状态,验证用户的目的。可是,你真的会用cookie吗?下面是使用cookie的一些原则。
用户名:明文存放。 登陆序列:一个被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一致。
2)修改电子邮件。(电子邮件一般用来找回用户密码,最好通发邮件或是发手机短信的方式修改,或者干脆就不让改一一用电子邮件作账号名) 3)用户的隐私信息。 4)用户消费功能。
找回口令的功能找回口令的功能必定要提供。可是不少朋友并不知道怎么来设计这个功能。咱们有不少找回口令的设计,下面我逐个点评一下。
|