Web上的用功能应该是最基本的功能了,可是在我看一些站点的用功能后,我得很有必要写一篇文章教大家怎么来做用功能。下面的文章告大家个功能可能并没有你所想像的那么简单是一个关系到用安全的功能,希望大家能从下面的文章中能知道什么的方法才是一个好的用功能。以下内容,转载时请保持原文一致,并注明作者和出

用户名和口令

首先,我先来说说名和口令的事。并不是本站第一次谈论这个事了。如何管理自己的口令你知道怎么管理自己的口令,破解你的口令你知道在这样速度的算速度下,用穷举法破解你的口令可能会是一件很松的事。在里我想告从开者的角度上来做设计这个用和口令的事。下面一几件规则

  • 限制用户输入一些非常容易被破解的口令。如什么qwert,123456, password之,就像twitter限制用的口令做一个口令的黑名。另外,你可以限制用口令的度,是否有大小写,是否有数字,你可以用你的程序做一下校。当然,可能会感到很不爽,所以,在很多网站都提供了UX知道他的口令度是什么的(比如个有趣的UX),这样可以有一个选择,目的就是告——要想安全,先把口令得好一点。

  • 千万不要明文保存用的口令。正如如何管理自己的口令的一,很多候,用都会用相同的ID相同的口令来登很多网站。所以,如果你的网站明文保存的,那么,如果你的数据被你的不良工流出去那是灾性的。所以,用的口令一定要加密保存,最好是用不可逆的加密,如MD5或是SHA1之的有hash算法的不可逆的加密算法。CSDN曾明文保存的口令。(另,于国内公司的品行以及有关部的管理方式,我不敢保国内网站以加密的方式保存你的口令。我得,做一个有良知的人,我们应该加密保存用的口令)

  • 是否让浏览器保存口令。我有N多的方法可以不让浏览器保存用名和口令。但是可能很不爽。因在真世界里得不住那么多的口令。很多用可能会使用一些密管理工具来保存密浏览器只是其中一种。是否让浏览器保存个需要你做决定,重点是看一下你的系的安全级别是否要求比高,如果是的不要让浏览器保存密,并在网站明的位置告——保存口令最安全的地方只有你的大

  • 口令在网上的传输。因HTTP是明文协议,所以,用名和口令在网上也是明文送的,个很不安全。你可以看看篇文章你就明白了。要做到加密传输就必需使用HTTPS协议。但是,在中国是有很多网站的Web登方式在使用ActiveX控件,可能成IE6大量存在的原因。我通常理解为这些ActiveX控件是了反键盘记录程序的。不,我依然ActiveX控件不应该存在,因在国外的众多安全很重要的站点上都看不到ActiveX的控件的身影。

用户登录状态

首先,我想告大家的是,因HTTP是无状协议,也就是协议是无法记录户访问的,其每次求都是独立的无关的,一笔是一笔。而我的网站都是设计成多个面的,所在面跳转过程中我需要知道用的状,尤其是用的状这样面跳后我才知道是否可以限来操作一些功能或是看一些数据。

所以,我每个面都需要的身份认证。当然,我不可能在每个面上入用名和口令,户觉得我的网站相当的SB实现这一功能,用得最多的技就是浏览器的cookie,我会把用的信息存放在客端的cookie里,这样,我每个面都从cookie得用是否登的信息,从而达到记录验证的目的。但是,你真的会用cookie?下面是使用cookie的一些原

  • 千万不要在cookie中存放用的密。加密的密都不行。因为这个密可以被人取并尝试线穷举。所以,你一定不能把用的密保存在cookie中。我看到太多的站点么干了。

  • 正确设计住密个功能直就是一个安全患,我得并不是所有的程序都知道怎么设计这个事。一般的设计是——一个功能,系会生成一个cookie,cookie包括用名和一个固定的散列个固定的散列一直使用。这样,你就可以在所有的设备和客上都可以登,而且可以有多个用个并不是很安全。下面是一些更安全的方法供你参考:
        ——更新 2011/08/26,原文中有些小错误,并且的不清楚,重新整了一下——

1)在cookie中,保存三个西——序列token

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

2)上述三个西会存在服器上,服器的验证需要验证cookie里的三个事。

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

atoken单实例登。意思就是一个用只能有一个登录实例。

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被来来回回的变换),当在一定时间内达到一定次数后,系才会真正得被盗用的可能性很高,此在后台清除序列tokenCookie失效,制用户输入口令(或是要求用更改口令),以保多台设备上的cookie一致。

  • 不要cookie访问所有的操作。否就是XSS攻个功能参看新浪微博的XSS。下面的些功能一定要用户输入口令:

1)修改口令。

2)修改件。(件通常用来找回用,最好通发邮件或是手机短信的方式修改,或者干脆就不改一一用件做号名)

3)用私信息。

4)用功能。

  • Cookie时间如果是永不期,会有很不的用,但是也会很快就忘了登。如果置上期期限,比如2周,一个月,那么可能会好一点,但是2周和一个月后,用依然会忘了密。尤其是用在一些公共电脑上,如果保存了永久cookie的,等于泄露了号。所以,于cookie的时间们还需要衡。

找回口令的功能

找回口令的功能一定要提供。但是很多朋友并不知道怎么来设计这个功能。我有很多找回口令的设计,下面我逐个点一下。

  • 千万不要使用安全。事实证明,环节人,而且用并不能很好的置安全答。什么,我的生日啊,我母的生日,等等。因今天的互网和以前不一了,因SNS,今天的互比以前更真了,我可以上facebook,开心,人人网,LinkedIn到你的很多的真的信息。通过这些信息我可以使用安全答来重你的口令。里需要一下 Facebook,Facebook的安全答很大,要你通照片人,呵呵。

  • 不要重置用的密。因为这有可能的密遭到意攻。当然,你要户让其确,用击邮件中的一个接,你再重置。我并不推荐这样的方法,因一般都会用笔下来个很难记的口令,然后登,因统时使用了“住密”的功能,所以致用不会去修改密,从而要么到被写下来的密被人盗取,要么又忘了密

  • 好一点的做法——过邮件自行重置。当用找回口令功能的候,系生成一个MD5唯一的随机字串(可通UID+IP+timestamp+随机数),放在数据中,然后置上限(比如1小内),户发一个件,接中包含那个MD5的字串的接,用那个接来自己重新置新的口令。

  • 更好一点的做法——多重认证。比如:通手机+件的方式户输验证码。手机+件可能不把握,因手机要能会了,而我的手机可以访问我的箱。所以,使用U盾,SecureID(一个会化的6位数token),或是通人工的方式核身份。当然,主要看你的系的安全级别了。

口令探测防守

  • 使用验证码验证码是后台随机生的一个短验证码验证码一般是一个算机很难识别片。这样就可以防止以程序的方式来尝试的口令。事实证明,是最简单也最有效的方式。当然,户输入那些肉眼都看不清的验证码的用不好,所以,可以折中一下。比如Google,当他发现一个IP地址出大量的搜索后,其会要求你验证码。当他发现同一个IP注册了3个以上的gmail箱后,他需要短信方式或是电话方式的验证码

  • 口令失次数置口令失的上限,如果失败过多,了,需要用以找回口令的方式来重新激活号。但是,个功能可能会被意人使用。最好的方法是,增加其尝试时间成本(以前的篇文章说过一个增加时间成本的解密算法)。如,两次口令尝试隔是5秒。三次以上错误号被临时锁上30秒,5次以上号被1分,10次以上错误帐号被4小……但是意用用脚本来攻,所以最好再加上验证码验证码次数多不禁止登而是禁lP。

  • 全局防守。上述的防守只针对某一个意者深知一点,所以,他一般会用“僵尸网尝试一堆用的口令,所以上述的那种方法可能好。我需要在系全局域上控所有的口令失的次数。当然,个需要我没有受到攻击时的数据做支持。比如你的系,平均每天有5000次的口令错误的事件,那么你可以认为,当口令错误大幅超过这个数后,而且时间集中,就明有***攻候你怎么?一般最常使用的方法是所有的用户输错口令后再次尝试时间成本增加。

最后,再一下,关于用,使用第三方的OAuth OpenID 也不失一个很不选择