通过电子邮件临时密码重置密码

问题描述:

我公司的一个组正在为我们的应用程序实施单点登录REST API。此验证服务具有密码重置功能。应用程序将用户名发送到重置功能。如果该用户名与电子邮件地址相关联,则会使用临时密码将电子邮件发送到该地址。通过电子邮件临时密码重置密码

另一种方法似乎是网站的电子邮件呈现为用户输入新密码的网页安全的,暂时的链接。此页面只存在很短的时间。

我知道,电子邮件是不是安全协议,这样人们就可以嗅出交通,恢复任一个临时密码或临时链接。

是否有任何重要的安全原因偏好一种方法而不是其他方法?还有另一种更安全的方法来做到这一点吗?

在这两种情况下,私人信息(临时密码或重置链接)都通过相同的介质传输。从这个角度来看,安全性没有区别。但是,重置链接有几个优点:您强制用户选择一个新密码。只要他这样做,链接是无效的,不能被滥用。相反,临时密码通常不会像你想的那么临时。即使您强制用户在下次登录时选择新密码,他仍可能再次进入临时密码。

此外,您还可以登录谁使用重置链接的一个的IP,所以至少有东西,如果有必要移交给当局。

+2

使用临时密码检测某个人并强制他们在继续之前对其进行更改是相当简单的。 – ceejayoz 2009-08-20 15:30:40

对于大众来说,没有更好的办法。如果它是一个内部应用程序,你可以想象发送用户必须用PGP解码的加密电子邮件,但除非你有一个非常高价值的小众产品,否则这绝不会为外部用户飞行。

如果电子邮件是的,你必须使用类似的安全问题,但他们有自己的(更显著,在我看来)的问题。这些问题包括:

  • 猜测的。像“最喜欢的颜色”这样的问题相当容易猜测普通的选择,如“红色”,“蓝色”,“绿色”等。
  • 可找到。许多是关于Facebook/MySpace/Twitter/Flickr个人资料或其他Googleable的内容。
  • 可以忘记。我选择了“最喜欢的度假胜地”,然后一两年后,我无法记住我选择的东西。
  • 很难解析。如果我为城市名称输入“圣保罗”,但后来以“圣保罗”回来,是否会被接受?
+0

您能否详细解答有关安全问题的问题? – andrewWinn 2009-08-20 15:34:38

+3

安全问题要么提出用户的Facebook个人资料中已有的内容,要么提出用户不记得的内容。 – Patrick 2009-08-20 15:40:42

+0

帕特里克在一个。他们经常是可以猜测的(选择红色,蓝色代表'最喜欢的颜色'会让你拥有很高比例的帐户),可以找到的(谷歌代表某人的Facebook/Twitter等等个人资料),或者可以忘记('最喜欢的休假地点'可能会改变 - 现在我有*两个*忘记密码!)。 – ceejayoz 2009-08-20 15:54:27

有很多更安全的方式来重置密码。所有这些对你的用户来说都非常不方便,而且维护起来很昂贵。让每个用户发送一份DNA样本和指纹,然后要求他们亲自出现以进行验证,这应该有助于您的安全。我很惊讶你的绝密组织允许你在*上获得安全建议。一切开玩笑,你的应用程序需要有多安全?攻击者真的会重置用户的密码,然后访问他们的电子邮件吗?

XKCD总是说最好的http://xkcd.com/538/

是否有任何显著安全原因,更喜欢一个方法比其他?

是的。如果您使用临时密码路由,那么任何人都可以通过不断点击重置链接并输入该用户的电子邮件地址来骚扰用户的垃圾。如果您使用密码重置链接,用户可以忽略它们并删除电子邮件。

+0

用户不能忽略临时密码电子邮件吗?或者你是否认为临时密码路由也锁定了用户? – Patrick 2009-08-20 16:24:41

+1

我希望如果发送新密码,旧的有效密码将会失效。 – Nifle 2009-08-20 16:46:17

+0

是的,我将“临时密码”表示为“您的旧密码现在无效,这是一个新密码。” – 2009-08-20 16:51:49