首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 开源 FAQ 第二书店 博文视点 程序员
频道: 研发 数据库 中间件 信息化 视频 .NET Java 游戏 移动 服务: 人才 外包 培训
    图书品种:235680
       
热门搜索: ASP.NET Ajax Spring Hibernate Java

1.4.3  分配临时密码

小结:除非强迫执行,否则用户不会改变临时密码

威胁:账户劫持、密码猜测

我曾经在一个在线书籍Web站点上注册了一个账户,但在两个月后才开始使用该站点。那个时候,我已经忘记了自己的密码,虽然我多次尝试猜测密码,但最后还是被迫点击“Forgot Password”链接。

令人惊讶的是,我没有进入相应的Web表单。相反,启动了我的电子邮件客户端,给站点的客服代表发送一封空白电子邮件。我惊讶于这种大型站点竟然只依赖于这种手工过程,但我还是撰写并发送了一封电子邮件。几小时后,我收到了一封来自于支持代表的电子邮件,告诉我已经重新设置了我的密码,但她并没有指示我如何登录到账户。我再次发邮件给她,询问如何设置新的密码。她迅速答复,并且告诉我新密码,这个密码让人怀疑是她经常使用的密码。我登录到自己的账户,但却无法发现在何处改变密码。毕竟这个重新设置密码的过程是手工的,我又怎么能期望他们提供密码改变功能呢?因为我的时间非常紧张,所以我放弃改变密码,并且简单地使用所分配的密码。直到一个月后,我才真正了解如何改变新密码。可能有数百个客户从来没有考虑过改变该站点的密码。

一般来说临时密码并非良好解决方案,并且通常可以找到更好的方法来实现目标。人们创建的临时密码一般都具有重复性,并且易于猜测。自动生成的密码通常遵循一定的模式,或者很难记住。除非强迫执行,否则用户并不希望改变临时密码。

构建代码

设计系统时,使其不依赖于临时密码。如果没有其他选择,则提供一种生成强密码的方法,并且限制每个密码,从而使得用户必须立刻改变这些密码。带有密码时效功能的系统允许我们更灵活地使用临时密码。

绝对不要期望随机生成的密码或临时密码是临时的,除非强迫它为临时的。为用户生成密码的一种技术是:创建密码,同时设置过期日期,使其已经过期,从而迫使用户在第一次使用时就必须改变密码。确保将该密码添加到密码历史记录列表中。

攻击代码

如果发现应用程序使用临时密码,则可以尝试创建几个账户,以查看这些临时密码是否有明显的模式。同时,尝试重新设置密码,以查看它是否创建了临时密码。

审查员应该确定用户是否可能立刻改变密码。通常情况下,推荐用户改变密码还不够,应用程序应该强制实施这种策略。

安全策略

n 避免允许客服代表设置临时密码。

n 如果必须使用临时密码,则使用强随机密码生成器。

n 如果必须使用临时密码,则提供很短的过期日期,或者将密码设置为已经过期。

查看所有评论(0)条】

最近评论



正在载入评论列表...
热点评论