你会做Web上的用户登录功能吗?
否登录的信息,从而达到记录状态,验证用户的目的。但是,你真的会用cookie吗?下面是使用cookie的一些原则。
千万不要在cookie中存放用户的密码 。加密的密码都不行。因为这个密码可以被人获取并尝试离线穷举。所以,你一定不能把用户的密码保存在cookie中。我看到太多的站点这么干了。 正确设计“记住密码” 。这个功能简直就是一个安全隐患,我觉得并不是所有的程序员都知道怎么设计这个事。一般的设计 是——一时用户勾选了这个功能,系统会生成一个cookie,cookie包括用户名和一个固定的散列值,这个固定的散列值一直使用。这样,你就可以在所有的设备和客户上都可以登录,而且可以有多个用户同时登录。这个并不是很安全。下面是一些更为安全的方法供你参考: (——更新 2011/08/26,原文中有些小错误,并且说的不清楚,重新调整了一下—— ) 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一致。 不要让cookie有权限访问所有的操作 。否则就是XSS攻击,这个功能请参看新浪微博的XSS攻击。下面的这些功能一定要用户输入口令: 1)修改口令。 2)修改电子邮件。(电子邮件通过用来找回用户密码) 3)用户的隐私信息。 4)用户消费功能。 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |