我使用RFC 4226为我的网站实施了一次性密码系统。此密码通过 SMS 发送到移动设备。用户只能在移动设备上接收密码,密码在 15 分钟后过期。
用户还拥有通常使用的标准字母数字“主密码”。我已经实施了 3 次失败锁定工作流程。此锁定持续 15 分钟。
我的问题是从安全的角度来看,只锁定“主密码”是否可以接受?如果用户使用一次性密码功能,我应该允许用户绕过锁定策略吗?我是否打开了任何类型的安全漏洞?
我使用RFC 4226为我的网站实施了一次性密码系统。此密码通过 SMS 发送到移动设备。用户只能在移动设备上接收密码,密码在 15 分钟后过期。
用户还拥有通常使用的标准字母数字“主密码”。我已经实施了 3 次失败锁定工作流程。此锁定持续 15 分钟。
我的问题是从安全的角度来看,只锁定“主密码”是否可以接受?如果用户使用一次性密码功能,我应该允许用户绕过锁定策略吗?我是否打开了任何类型的安全漏洞?
这并不完全是您问题的答案,但是在构建这样的系统时,您必须记住,每次两个对接时,可用性都胜过安全性。您对最终用户制定的安全策略越严格,他们就越有动力想出不安全的解决方法来完成他们的工作。
施奈尔说的比我在这里总结的要好,我建议在那里阅读他的东西。
我理解您对安全性与可用性的观点,我为您提供实施 静态密码锁定机制,这已成为几乎每个网站的事实标准。
这里解释得很好,所以我不需要再次输入:
今天的大多数密码锁定机制都是静态的,这意味着它们会在用户尝试一定次数的错误密码后将其锁定。实施此功能是为了防止对登录功能的暴力尝试。即使这个功能做了它应该做的,它也有它自己的缺点。从安全的角度来看,这个功能可能被坏人滥用,通过编写一个包含所有可能的用户名排列和组合的脚本(如果不是字母数字,主要是字母)来锁定大多数或所有用户,导致在 拒绝服务中。
从可用性的角度来看,在锁定用户帐户之前允许尝试的次数总是存在争议。大多数网站允许 3 次尝试,而一些(很少)允许 5 次或有时 7 次。
Intellipass试图弥合此功能的安全性和可用性方面之间的差距。通过存储用户的每一次登录尝试,Intellipass 可以智能地了解用户过去的行为并采取相应的行动。例如。如果用户每次都将自己锁定,那么 Intellipass 将动态增加尝试次数,从 3 次增加到 5 次或从 5 次增加到 7 次。另一方面,如果用户每次尝试登录时都是第一次或第二次登录过去,但由于某种原因这次尝试了 3 次,Intellipass 会自动将尝试次数从 7 次减少到 5 次或 5 次减少到 3 次。 Intellipass 的第二个组件是随机输入验证码或在验证码之间插入时间延迟登录尝试以防止自动攻击。