当用户想要更改帐户的密码时,大多数web应用程序都会呈现一个表单,用户需要在其中输入新密码和旧密码。到目前为止,我认为我理解这种方法的好处。例如,旧密码是对CSRF的额外缓解,如果攻击者获得web会话,则可以避免帐户劫持(即更改帐户密码)。
在谷歌--当然;) --这是不同的。当用户单击该链接以更改密码时,将显示一个登录表单,用户必须重新进行身份验证。在重新认证之后,将显示一个表单,用户只需输入新密码即可。不再需要旧密码。
这些方法有一些优点和缺点:
在我看来,第二种方法的弱点风险要高得多,特别是因为在重新身份验证和提交新密码之间可能会发生很多事情。此外,我认为重复使用风险分析和类似的东西应该是可能的,而不需要花费很大的精力进行密码更改过程。
因此,我的问题是,我是否错过了什么东西,使第二种方法(谷歌)优越?
发布于 2016-07-05 23:02:22
我的猜测是,对于谷歌来说,它可以让他们更容易地处理TFA(双因素认证)的所有不同选项。在我的头顶上,他们至少支持3或4种不同的方法。它们还允许您同时启用多个TFA,因此您可以选择使用哪个TFA。
这并不是说你也不能用旧的和新的密码字段在同一个更改密码页面上处理所有这些,但是它肯定比只要求旧密码和新密码更复杂。
发布于 2018-11-12 18:22:44
这是因为人们离开他们的电脑,让他们不上锁并登录。
第二个登录要求意味着,当你去买更多的咖啡,或者你必须跑上飞机,忘记注销或者有人偷了你的课程时,坐在你旁边的那个家伙不能偷你的账户。
他们这么做是为了任何与安全有关的事。
真的没什么坏处。
发布于 2016-07-05 20:40:22
有一件事需要考虑的是,谷歌花了很多时间来设计它的认证系统-with,相当于一个博士级的工程师智囊团。似乎保护密码更改表单只是该功能的另一个实现,-such是可移植和可重用代码的目的。IMHO,这应该是更经常的杠杆作用。这样,开发人员就不必构建他们的身份验证系统的第二种形式(即oldpw == currentPW?changePW : returnError),当最初的工作正常的时候。
您的评估是正确的,即没有登录就无法访问的PW更改形式的弱点,以降低风险的形式出现。
经过适当的开发和实现,我不知道这个故事的一个版本是否比另一个版本更好(正如您已经证明的那样,它有优点和缺点),所以我认为这取决于偏好、架构和业务决策,以及如何集中开发人员的时间和精力。
https://security.stackexchange.com/questions/129250
复制相似问题