重置登录帐户的安全方法

时间:2015-11-02 10:09:45

标签: android privacy login-control

我正在开发一个允许用户存储和加密信息的应用程序,其中一些可能是敏感的。最近出现了问题"如果用户丢失密码怎么办?"目前无法在此应用中恢复丢失的密码。我想避免让应用程序向我的服务器发送任何信息以保护隐私。我想过可能会设置一种方法,通过在用户名和密码字段中放入一个特定的短语来重置登录信息,用户可以通过电子邮件请求。但是我不确定这是不是一个好主意。有没有更好的方法来实现这一目标?

1 个答案:

答案 0 :(得分:1)

您处理密码重置的最安全方式很可能是使用重置令牌。每当用户请求重置密码时,您都会创建一个有效期为15分钟或直到使用的新令牌。然后,您会发送一个指向该用户电子邮件的链接,其中的网址类似于website.tld/reset?user=username&token=aRandomToken。在重置页面上,用户可以选择新密码。这样,您就不必处理创建以纯文本形式发送给用户的随机密码。更安全的方法是对用户进行哈希处理,因此user参数将是哈希值,然后用户必须在重置页面上输入其用户名。这样,有链接的黑客不能只查看网址,但实际上需要知道用户名。

为了方便起见,实现可能类似于:

var reset = new PasswordReset;
reset.user = realUsername;
reset.token = md5(randString(5) + date('Y-m-d H:i:s');
reset.save();

var url = 'website.tld/reset?user=' + md5(realUsername) + '&token=' + reset.token;

// send an email to the user with the url 
相关问题