我正在构建一个用户可以创建帐户的基本应用程序。用户可以将用户名保持为alex
这么简单。可以有多个用户名为alex
的用户。对于它们中的每一个,我将生成一个用作密码的唯一密钥。密钥可以是a3exyG
,alevuQ
或类似的东西。此密钥将与用户名一起邮寄给用户。以后这些可用于登录。我的问题是这是否会造成任何安全问题。我的意思是,如果其他人已经可以访问用户的电子邮件ID,他/她仍然可以重置密码。
答案 0 :(得分:2)
我个人不会这样做。用户名应该是唯一的(以避免任何问题),并且密码应始终在数据库中进行散列并由用户选择。
当您对输入的密码进行身份验证时,应对其进行哈希处理并与数据库中的值进行比较...单行道。
密码从未邮寄给用户。
如果您需要重置忘记的密码,我会创建一个到期的令牌,并将带有该令牌的链接通过电子邮件发送给用户,该用户将他们带到页面以输入新密码。
编辑: 我说有人能够访问某人的电子邮件的风险远远低于使用纯文本存储的密码,密码被邮寄以及系统上的用户名重复。
答案 1 :(得分:1)
您不应以纯文本形式发送/存储合理数据。通常做的是向用户发送指向用户可以设置密码的网页的链接。
我该怎么做:
另一个选择是在用电子邮件收到密码登录后强制用户在网站上更改密码。
更多信息:
答案 2 :(得分:0)
用户可以更改密码吗?如果有两个条目匹配相同的用户和密码,则可能会出现问题...
答案 3 :(得分:0)
除了@Gori所说的,我认为这是开发人员的责任问题。
通过电子邮件发送任何类型的敏感数据(如密码)或以纯文本格式存储它们并不安全(因此不负责任)。
如果两个用户具有相同的名称和密码怎么办?用于区分用户的信息越多,保护帐户越容易,并识别正确的用户。
您作为开发人员的责任不是确保用户的电子邮件是安全的。这是电子邮件提供商的责任。只要确保你正在写什么和推动是什么。
this Stackexchnage question上接受的答案很好地解决了这个问题。你可以看看。