我公司的一个小组正在为我们的应用程序实现单点登录REST API。此身份验证服务具有密码重置功能。应用程序将用户名发送到重置功能。如果该用户名与电子邮件地址相关联,则会使用临时密码将电子邮件发送到该地址。
另一种方法似乎是通过电子邮件发送安全的临时链接的网站,该链接为用户提供输入新密码的页面。此页面仅存在很短的时间。
我知道电子邮件不是安全协议,因此人们可以嗅探流量并恢复临时密码或临时链接。
是否有任何明显的安全理由偏好一种方法而不是另一种方法?还有另一种更安全的方法吗?
答案 0 :(得分:9)
在这两种情况下,私人信息(临时密码或重置链接)都通过同一媒体传输。从这个角度来看,安全性没有区别。但是,重置链接有几个优点:强制用户选择新密码。一旦他这样做,该链接是无效的,不能被滥用。相反,临时密码往往不是您想要的临时密码。即使您强制用户在下次登录时选择新密码,他也可能再次进入临时密码。
此外,您可以记录使用重置链接的人的IP,因此必要时至少要有一些东西移交给当局。
答案 1 :(得分:9)
是否有任何重要的安全理由来选择一种方法而不是另一种方法?
是。如果您使用临时密码路由,那么任何人都可以通过不断点击重置链接并输入该用户的电子邮件地址来惹恼用户的垃圾。如果您使用密码重置链接,用户可以忽略它们并删除电子邮件。
答案 2 :(得分:4)
对普通大众来说,没有更好的方法。如果它是一个内部应用程序,你可以想象发送用户必须用PGP解码的加密电子邮件,但除非你有一个非常高价值的小众产品,否则它永远不会飞到外部用户。
如果电子邮件已经发布,您必须使用类似安全问题的内容,但他们有自己的(在我看来更重要)问题。问题包括:
答案 3 :(得分:0)
有许多更安全的方法可以重置密码。所有这些都非常不方便您的用户,维护成本高昂。让每个用户向您发送DNA样本和指纹,然后要求他们亲自出现进行验证,这将有助于您的安全。我很惊讶你的绝密组织允许你获得有关stackoverflow的安全建议。除了开玩笑,你的应用程序需要多安全?攻击者真的会重置用户的密码,然后访问他们的电子邮件吗?
XKCD总是说得最好http://xkcd.com/538/