如何保护重置密码功能?

问题描述 投票:2回答:5

我想实现重设密码功能,以防用户丢失密码。但是我担心有人会向不属于他的单个或多个电子邮件地址发出很多这样的请求,这对于那些地址的实际所有者是很烦人的,最终我会被列入黑名单。

我该如何确保对此功能进行保护?设置每个IP发送的有效电子邮件的限制? (我想最多3封电子邮件就可以了)

security authentication user-interface authorization
5个回答
4
投票

为什么不简单地将CAPTCHA添加到密码重设请求表?然后,您可以限制每个电子邮件地址和每天/每周/每月的请求数量,但是CAPTCHA将使僵尸程序远离。


2
投票

假设您正在编写要在互联网上使用的应用程序,而您无法控制用户的注册,则可以对尝试在用户帐户上尝试进行密码重置的次数设置滚动限制。

滚动限制将用于确保在短时间内不会发出太多密码重置请求。您可以限制用户发出3个密码重置请求,但只能在1小时内,甚至可能是1天;您的企业应该能够确定最佳价值,尤其是如果用户还可以通过其他方式(通过发送电子邮件或致电服务台)发出密码重设请求时。

[此外,您可以将生成的令牌(我假设您要向每封邮件发送密码重置令牌)与预定义的到期日期相关联,并且所有此类令牌只能使用一次。理想情况下,令牌的持续时间不应超过几个小时。高度敏感的应用程序还将审核除常规身份验证尝试之外的所有密码重置请求。

最后,您还可以限制源自某个IP的密码重置请求的数量(这是DoS防护攻击,无法抵御DDoS攻击)。不用说,但是如果尝试重设密码,则在此期间不应禁用关联的帐户。这样做可以成功进行DoS攻击,攻击者可以通过简单地针对已知的电子邮件ID数据库发出密码重置请求来禁用帐户。您必须在建立限制时考虑ISP代理,否则您实际上可能在此过程中伤害了一些客户。


1
投票

我已经看到其他网站属性引入了新的密码重置系统(比CAPTCHA更好),该系统提供某种形式的2FA(两因素身份验证),您可以在其中远程登录到帐户中作为备份。用户将一次性的个人识别码发送到其单元格,然后输入该密码。无需处理垃圾邮件过滤器,无需重新加载验证码表单等,就容易得多。防止大量注册,垃圾邮件,并且与替代解决方案相比,它通常看起来更有效,更友好。


0
投票

请注意IP的设置限制。您通常只有一个Internet网关,它通过单个IP(即公司网络)向大量用户开放。

[如果您担心重置特定地址的请求数量,那么与其说是安全问题,不如说是可用性问题。我倾向于定义一个可接受的rate,在平衡范围内不允许过多的重置请求,也不会使重置变得太困难(即原始电子邮件陷入垃圾中,因此又请求另一个)。例如,记录请求的时间,并且不允许再等待15分钟。

尽管在实用上,我不会对此太担心。如果您确实愿意,有无数种通过电子邮件与某人打交道的方法,除非对利用您的重置功能特别有吸引力,否则我只会做大多数站点所做的事情,并在需要时允许重置,并且仅在之后重置密码。用户收到电子邮件并对其进行操作。


0
投票

忘记密码页面保护:

  • [输入无效电子邮件时显示成功消息。有人输入无效电子邮件时,告诉用户重置密码链接已发送到您的电子邮件(但实际上不使代码执行任何操作) 。这样可以防止黑客试图识别系统上的有效帐户。

  • [使用验证码短语。为避免恶意脚本触发大量电子邮件的重设密码请求。

  • 特定电子邮件的重置密码链接每小时发送的次数不得超过3次(左右)。这样可以防止数据库中存储太多的重置链接而使数据库泛滥,并填满数据磁盘。

© www.soinside.com 2019 - 2024. All rights reserved.