问题标签 [forgot-password]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
15423 浏览

security - 通过电子邮件发送临时密码重置密码

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

另一种方法似乎是通过电子邮件发送一个安全的临时链接的网站,该链接提供一个页面供用户输入新密码。此页面仅存在很短的时间。

我知道电子邮件不是一种安全协议,因此人们可以嗅探流量并恢复临时密码或临时链接。

是否有任何重要的安全原因偏爱一种方法而不是另一种方法?有没有另一种更安全的方法来做到这一点?

0 投票
2 回答
1757 浏览

asp.net - 重置密码页面上的用户验证

我正在为我的网站编写密码重置页面。这是我的想法:

一种。用户点击登录页面上的“忘记密码”链接

湾。重定向到我的密码重置页面

C。用户输入他的电子邮件地址

d。发送到电子邮件地址的电子邮件消息,其中包含用于重置他/她的密码的链接。该链接中包含安全代码,例如 ?code="xxxx"。

e. 用户打开链接并输入新密码,然后单击提交按钮。

F。我的页面更改用户的密码。

我的问题是关于步骤 f。在步骤 e 中,当用户打开链接时,我可以验证他的安全码,然后向用户显示“新密码”和“确认密码”字段。但是当用户点击提交按钮时,我怎么知道这是用户而不是黑客提交的真实请求呢?也许我错了,但我认为黑客可以很容易地模拟这样的字段数据,因为没有验证字段。

我可以想到一些想法来验证步骤 f 中的请求,但我不知道它们是否正确。1、在步骤e中添加一个加密的cookie并在步骤f中检查?2.在步骤e中使用会话变量并在步骤f中检查它?3.在步骤e中添加隐藏字段并在步骤f中检查?

这些方法可以吗?哪个更好,或者有没有更好的?

提前致谢。

0 投票
3 回答
3992 浏览

asp.net - 重置 ASP.NET 密码 - 安全问题?

我已经看到有关此问题的各种问题,但有几个问题尚未提出。如果用户忘记了密码,我希望他们能够仅使用他们的电子邮件地址来重置密码(即没有安全问题/答案)。密码存储为加盐哈希,因此无法恢复。相反,我只是希望用户在确认他们已请求重置后输入新密码。

提到的一种常见方法是简单地:

1) 创建一个随机 Guid/加密强随机数

2) 将包含随机数的唯一 URL 发送到用户的电子邮件地址

3) 确认后,要求用户更改密码

但是,这不是容易受到MITM攻击吗?如果通过 Internet 向电子邮件发送临时密码是不安全的,那么这样做与简单地发送攻击者可以导航到的唯一 URL 有什么区别?我是否错过了使该系统更安全的关键步骤(或者是否有更好的重置密码的方法)?

谢谢

0 投票
2 回答
8756 浏览

django - 向 Django 管理站点添加忘记密码功能

如何将忘记密码功能添加到 Django 管理站点?有电子邮件/安全问题选项?有没有可用的插件/扩展?

0 投票
3 回答
919 浏览

asp.net - 验证重置应用程序的用户 Oracle 密码

这是编程和系统管理员的混合体,但我认为它更多的是编程问题。

目前正在构建用于管理 Oracle 用户帐户 (C#) 的密码管理 Web 应用程序。

该范围要求在允许用户设置新密码之前验证用户 Oracle 用户名和密码。如果不创建用户密码表(散列或其他,这是一个安全风险),我如何验证旧用户密码?

我当前的解决方案是尝试使用用户指定的用户名/密码连接到数据库。在这方面的太多尝试会将用户锁定在 Oracle 端,因此暴力破解不太可能。我在这里是否还有其他安全风险,或者是否有更好的方法来处理这个问题?

我们使用 AD 作为主要身份验证,但 AD 帐户未绑定到 Oracle 帐户,因此这只是初步检查。

应用程序流程(如果有帮助):

  1. AD 检查正确的域(Int​​ranet)
  2. 用户输入 Oracle 用户名/密码
  3. 输入旧密码,新密码+确认
  4. 如果正确,请重置密码
0 投票
2 回答
471 浏览

database - 如何使数据库记录中的更改密码唯一代码“过期”?

我想在我的 java web 应用程序中实现忘记密码功能。我想像这样实现它:

  1. 用户输入他们的帐户电子邮件地址并按下“忘记密码”按钮
  2. 应用程序生成唯一的字符和数字代码,并将链接作为参数发送到用户的电子邮件地址
  3. 用户单击该链接,他们会看到一个表单,他们可以在其中输入新密码

我想要做的是确保链接(即唯一代码)在用户按下忘记密码按钮后一小时“过期”,这样如果攻击者获得对其电子邮件帐户的访问权限,除非他们获得访问权限,否则此链接将不起作用在第一个小时。

我不知道如何使数据库“过期”或清除用户帐户记录的代码。我怎么能实现这个?

0 投票
3 回答
1159 浏览

doctrine - sfDoctrineGuard 问题

我正在尝试执行“我忘记了密码”功能。我的问题是,如果我尝试进行 Doctrine 查询并将密码发送到电子邮件,它会检索加密的密码。我看了一些网站,DoctrineGuard 没有这个功能,只有注册和登录功能。

这是真的吗?

在这种情况下,我该如何做一个记住密码的功能?

谢谢

0 投票
12 回答
38996 浏览

passwords - 实施密码恢复最佳实践

我想在我的 Web 应用程序中实现密码恢复。

我想避免使用秘密问题。

我可以通过电子邮件发送密码,但我认为这样做有风险。

也许我可以生成一个新的临时随机密码并通过电子邮件发送,但我认为这与上述几点一样有风险。

我可以通过电子邮件发送一个 URL,例如http://example.com/token=xxxx ,其中 xxxx 是与用户关联的随机令牌。因此,当用户导航到该网址时,他/她可以重置密码。

0 投票
5 回答
3558 浏览

security - 在没有数据库表的情况下通过电子邮件重置密码

通过邮件重置用户密码的正常流程是这样的:

  1. 生成随机字符串并将其存储在数据库表中
  2. 给用户的电子邮件字符串
  3. 用户点击包含字符串的链接
  4. 根据数据库验证字符串;如果匹配,则重置用户的密码

但是,维护表格和过期旧字符串等似乎有点不必要的麻烦。这种替代方法是否有任何明显的缺陷?

  1. 生成用户现有密码的 MD5 哈希
  2. 通过电子邮件将哈希字符串发送给用户
  3. 用户点击包含字符串的链接
  4. 通过再次散列现有 pw 来验证字符串;如果匹配,则重置用户的密码

请注意,用户的密码已经以散列和加盐形式存储,我只是再次对其进行散列以获得唯一但可重复的字符串。

是的,有一个明显的“缺陷”:在用户更改密码(单击链接)之前,由此生成的重置链接不会过期。不过,我真的不明白为什么这会是个问题——如果邮箱被盗,无论如何用户都会被搞砸。并且不存在重复使用的风险,因为一旦用户密码更改,重置链接将不再匹配。

0 投票
2 回答
1747 浏览

asp.net - 发送新密码 - Asp.net - 使用 gmail (smtp.gmail.com)

我经历了所有帮助和所有论坛。但没有一个对我有帮助。这是我的问题

  1. 使用 ASP.NET 3.5 在 localhost 上开发站点
  2. 我想使用提供“忘记密码”功能<asp:PasswordRecovery>
  3. 非常感谢任何真正的帮助。请注意,我想通过更改 web.config 或以编程方式发送它。

谢谢