随着网络的全面普及,网络安全问题也日趋严峻。暨著名的技术交流社区CSDN爆出600余万用户明文密码暴露事件之后,天涯社区4000万用户明文密码也泄漏于世,紧跟着人人网、开心网、猫扑等,甚至京东商城、当当网、支付宝这样的电商网站都相继爆出密码泄露问题,几百万上千万的用户资料赤裸裸的暴露在公开的网络平台之上,让我们不由的担心起网络日益严峻的安全问题。 现如今,很多电商及银行的网站都采用了动态密码服务,大大的保障了用户的信息和资金安全,主要方式有: 1、动态口令卡:类似于刮刮卡形式,通过横竖两个指标来确定当前密码。 常见:银行口令卡等; 缺点:需要随身携带,且容易被复制或拍照记下,安全性相对不高,并且有限次使用。 2、硬件令牌:根据专门的算法(一般为时间算法)生成一个不可预测的随机数字组合,每个密码只能使用一次,或类似于U盾一类的需插入硬件进行数据比对。 常见:U盾、QQ令牌等; 缺点:需要随身携带,使用较为繁琐,并且要花费不少硬件成本; 3、手机口令:一种是通过软件来实现动态口令的生成,另一种较为简单,通过短信获取验证码来确认身份; 常见:QQ手机令牌,支付宝付款手机验证码等; 缺点:需要和手机绑定,如遇更换手机号则较为麻烦,有时还会遇到延时或无法接收,网站需部署短信平台,大量短信需要不少成本; 以上各种方式各有其优点,但都有一个很大的问题,就是不适合中小网站部署,都需要耗费大量的时间成本和资金成本,且给用户增加了很多负担;那么有没有一种更为方便快捷并且无需成本的安全口令解决方案呢? 笔者通过多年的网络建设经验,总结并发明了一种简单并行之有效的动态口令实施方案,且适用各类语言编写的网站,中小网站均可快速部署。 中小网站用户登录常用的方式为:“用户名+密码” 或 “用户名+密码+验证码”;即便采用了MD5加密,也无法保证客户密码不会泄露,因为密码的输入过程有可能被旁边的人看到,或者电脑后台的木马记录,如果要解决这个问题,那只有一个办法,让看到的人或监听密码的木马上当,也就是说,他们看到或者记录到的密码并不是真正的密码,因为密码随时都在变化! 具体解决方法:原有的“用户名+密码”的选项可以继续保留(验证码完全可以取消),增加一栏动态密码框,验证需要三项结果匹配才能登陆。 下面就来重点解释一下如何设计动态密码框:笔者采用的方式是利用“时间算法”来生成动态口令,因为时间是每分每秒都在变化的,用时间来做算法,可以确保动态口令的时效性,即:上一秒的密码在下一秒就失效了。举例,现在时间是“14:28分54秒”,则动态密码可以设定为“142854”,后台获取当前时间设为“A”,输入框的值为“B”,当输入“142854”时,则“B=A” 验证通过!为了避免输入的时间差,可以在前台把时间直接赋值给“A”,然后在后台进行比对。
当然,在实际运用中,我们不可能直接把时间作为动态口令,这样不但太过简单,而且无法多人共用这个体系,因此,我们要在“时间”的基础上来做文章,即设定每个人特定的算法。还是以上面的时间“14:28分54秒”为例,我们现在进行拆分,并加强算法,为了便于记忆,我将时间分为三个部分“14、28、54”,并以数字“365”作为附加口令,算式如下:“14+3、28+6、54+5”,即最终动态密码实际为“173459”。如果希望更加的安全,我们设置可以在此基础上不断的变化,比如引入“+-*÷”,附加口令也可以是任意自己易记的数字,如生日、身份证号等,“时间+附加码”通过特定算法随意组合。
OK,大功告成!这样的密码除了设定者本人以外,任谁也想不到是如何得来的,而且每秒都在变化,最关键的是,对于程序员来说,只需短短10分钟便可部署完毕! 如果您对本文还有疑问或者部署中遇到问题,可以与作者联系(QQ:622569)。 文:曹建祥 (责任编辑:admin) |