安全、丢失或忘记密码
Security, lost or forgotten password
首先,我真的不知道在这里问这个问题是否合适,如果应该移动,请这样做或让我知道。
我正在构建一个移动应用程序(使用 phonegap),这是一种银行应用程序,因此,我需要一种真正安全的方法来重置 lost/forgotten 密码。
我不想使用电子邮件链接或短信代码进行重置部分,因为:
- 电子邮件地址可能已经泄露。
- (我住的地方)Phone 可能会被盗(很有可能)并且电子邮件可能会链接到 phone,因此短信也毫无意义。
所以在阅读了一些内容之后,我想到了下一个想法,当用户点击忘记密码时在应用程序中:
- 询问用户注册邮箱。
- 询问注册时选择了哪个国家、州和城市。
- 询问用户是否在过去 3 或 7 天内成功登录(也许越少越好?)。
- 询问最后收到的钱数(如果有的话)。
- 询问最后汇款金额(如果有的话)。
- 询问已知的最后一笔交易的日期(在最后一次成功登录之前或期间发送或接收)。
如果所有信息都被证明是正确的,让用户设置一个新密码。 否则 只是显示一条消息,告诉用户信息中的某些内容有误,从不具体说明错误。
这些是一些问题,但我写这篇文章是因为它是我突然想到的。根据使用该应用程序的用户体验,会有更多问题。
我的问题:
- 这安全吗?
- 这个想法有哪些弱点?
- 这是否有效地替代了 email/link 组合或 phone/sms?
提前致谢。
更新:
我不喜欢在注册时设置安全问题,因为大多数人会忘记答案或粗心输入,然后他们就会被忘记的帐户所困。
我不会使用任何银行帐户或 credit/debit 卡信息。
所有操作立即生效
也许我应该只使用与应用程序的使用相关的问题?
随着密码恢复的进行,这种方法相对安全。但是,它不是很用户友好,用户很可能被锁定。另一方面,小偷仍然可以轻松地恢复密码。一一答题:
Ask user email of registration.
偷了 phone 的小偷可以访问这个(最有可能)。
Ask which country, state and city were selected when registration occurred.
如果小偷在用户的电子邮件中搜索,这也将很容易检索。即使那里没有显示此类信息,知道用户姓名的小偷也可以查看白页网站或 Facebook 并获取有价值的信息。
Ask if the user had login successfully in the last 3 or 7 days (maybe less is better?).
幸运的猜测有 50% 的机会可以让小偷通过这个。合法用户也可能不记得,这导致了该方法的第一个可用性问题。
Ask the last amount of money received (if any).
这很难记住,尤其是如果这种情况发生的次数不多,或者一直发生并且数量各不相同。知道用户银行账户的窃贼(可能 IBAN 之类的信息在电子邮件中)也可以向该账户转移少量资金并通过此阶段。
Ask the last amount of money sent (if any).
如果这也涉及交易(使用信用卡支付),小偷可以跟踪合法用户并观察在上次交易中花费的钱。如果没有,这仍然是一个很大的可用性问题,因为用户不太可能记住。小偷还可以检查用户的电子邮件,看看是否有任何在线购买的商品(例如亚马逊发送确认电子邮件)并将其作为金额输入。
Ask the date of the last transaction known (sent or received before or during the last successful login).
同样,合法用户很难记住这一点。尤其是收款时,可能需要几天时间,因此即使用户知道 him/her 的付款在 X 天到期,也可能会延迟几天。
如果我是你,我会把电子邮件、用户名、用户记住的最后一个密码,以及用户必须在开始时设置的 2-5 个恢复问题。我会让用户总共尝试 3 次,所有这些事件都会被记录下来并通知银行。否则,用户必须联系银行才能更改。通话会被录音,并要求提供个人信息以及 phone 银行密码。如果用户再次失败,he/she 必须携带某种形式的带照片 ID 去银行。
对更新的响应: 如果某个应用不是每天都在使用(banking-like 应用对很多用户来说都是这种情况),它可能不是询问有关应用程序使用的问题是个好主意。
关于安全问题,也许如果您设置一条消息警告用户如果他们忘记了他们可能会被锁定在他们的帐户之外,可能会说服他们更加小心。也许你可以让用户选择问题和答案(只要确保每次的问题和答案都不同,并且长度超过 1-2 个字符)。
首先,我真的不知道在这里问这个问题是否合适,如果应该移动,请这样做或让我知道。
我正在构建一个移动应用程序(使用 phonegap),这是一种银行应用程序,因此,我需要一种真正安全的方法来重置 lost/forgotten 密码。
我不想使用电子邮件链接或短信代码进行重置部分,因为:
- 电子邮件地址可能已经泄露。
- (我住的地方)Phone 可能会被盗(很有可能)并且电子邮件可能会链接到 phone,因此短信也毫无意义。
所以在阅读了一些内容之后,我想到了下一个想法,当用户点击忘记密码时在应用程序中:
- 询问用户注册邮箱。
- 询问注册时选择了哪个国家、州和城市。
- 询问用户是否在过去 3 或 7 天内成功登录(也许越少越好?)。
- 询问最后收到的钱数(如果有的话)。
- 询问最后汇款金额(如果有的话)。
- 询问已知的最后一笔交易的日期(在最后一次成功登录之前或期间发送或接收)。
如果所有信息都被证明是正确的,让用户设置一个新密码。 否则 只是显示一条消息,告诉用户信息中的某些内容有误,从不具体说明错误。
这些是一些问题,但我写这篇文章是因为它是我突然想到的。根据使用该应用程序的用户体验,会有更多问题。
我的问题:
- 这安全吗?
- 这个想法有哪些弱点?
- 这是否有效地替代了 email/link 组合或 phone/sms?
提前致谢。
更新:
我不喜欢在注册时设置安全问题,因为大多数人会忘记答案或粗心输入,然后他们就会被忘记的帐户所困。
我不会使用任何银行帐户或 credit/debit 卡信息。
所有操作立即生效
也许我应该只使用与应用程序的使用相关的问题?
随着密码恢复的进行,这种方法相对安全。但是,它不是很用户友好,用户很可能被锁定。另一方面,小偷仍然可以轻松地恢复密码。一一答题:
Ask user email of registration.
偷了 phone 的小偷可以访问这个(最有可能)。
Ask which country, state and city were selected when registration occurred.
如果小偷在用户的电子邮件中搜索,这也将很容易检索。即使那里没有显示此类信息,知道用户姓名的小偷也可以查看白页网站或 Facebook 并获取有价值的信息。
Ask if the user had login successfully in the last 3 or 7 days (maybe less is better?).
幸运的猜测有 50% 的机会可以让小偷通过这个。合法用户也可能不记得,这导致了该方法的第一个可用性问题。
Ask the last amount of money received (if any).
这很难记住,尤其是如果这种情况发生的次数不多,或者一直发生并且数量各不相同。知道用户银行账户的窃贼(可能 IBAN 之类的信息在电子邮件中)也可以向该账户转移少量资金并通过此阶段。
Ask the last amount of money sent (if any).
如果这也涉及交易(使用信用卡支付),小偷可以跟踪合法用户并观察在上次交易中花费的钱。如果没有,这仍然是一个很大的可用性问题,因为用户不太可能记住。小偷还可以检查用户的电子邮件,看看是否有任何在线购买的商品(例如亚马逊发送确认电子邮件)并将其作为金额输入。
Ask the date of the last transaction known (sent or received before or during the last successful login).
同样,合法用户很难记住这一点。尤其是收款时,可能需要几天时间,因此即使用户知道 him/her 的付款在 X 天到期,也可能会延迟几天。
如果我是你,我会把电子邮件、用户名、用户记住的最后一个密码,以及用户必须在开始时设置的 2-5 个恢复问题。我会让用户总共尝试 3 次,所有这些事件都会被记录下来并通知银行。否则,用户必须联系银行才能更改。通话会被录音,并要求提供个人信息以及 phone 银行密码。如果用户再次失败,he/she 必须携带某种形式的带照片 ID 去银行。
对更新的响应: 如果某个应用不是每天都在使用(banking-like 应用对很多用户来说都是这种情况),它可能不是询问有关应用程序使用的问题是个好主意。
关于安全问题,也许如果您设置一条消息警告用户如果他们忘记了他们可能会被锁定在他们的帐户之外,可能会说服他们更加小心。也许你可以让用户选择问题和答案(只要确保每次的问题和答案都不同,并且长度超过 1-2 个字符)。