你不应该只构建一个能安全且有效地验证用户身份的登录和注册系统;相反,你应该创建一个系统,通过增加额外的安全层,确保你的应用程序不仅仅局限于安全地验证用户身份,该安全层包括以下内容:
- 创建登录尝试追踪器
- 始终在你的注册/报名表单中添加验证码。
是的,这些信息你可能从资深开发人员那里得知,或者是在你的系统或用户遭受攻击后才意识到,但这可能为时已晚。请注意,这些概念可以使用任何编程语言来实现。
因此,让我们解释一下原因以及如何正确实施这些额外的安全层。
原因
你应该始终在注册/报名表单中添加验证码的原因,是为了防止自动化系统或机器人向你的服务器发送大量请求并创建虚假账户。
登录页面并不一定总是需要验证码,因为要求现有用户每次登录时都回答验证码会带来糟糕的用户体验。
相反,你应该创建一个系统来追踪用户的登录尝试,并在他们达到一定数量的失败登录尝试时显示验证码。
这将防止未经授权的人员猜测用户的登录凭证,同时保护你的服务器免受潜在的暴力破解攻击。
如何正确实施登录尝试追踪器安全层
你需要创建一个数据库表来存储登录尝试的详细信息,每次尝试时增加计数,并创建一个仅用于服务器端访问的 httpOnly Cookie“attemptCounts”。将详细信息保存到数据库而不仅仅是 Cookie 的主要原因,是为了防止攻击者篡改数据,并且即使客户端切换设备、位置或互联网协议地址,也能识别和追踪他们。
因此,你可以使用以下任一选项或通过组合它们来基于收集的数据识别和追踪每次尝试:用户电子邮件、互联网协议地址、用户名或电话号码。
简单登录尝试表示例:
id: 序列号
email: 字符串 //电子邮件或用户名或电话号码
ip: 字符串
counts: 整数
createdAt: 时间戳
updatedAt: 时间戳
最大失败登录尝试次数应设为 5 次。一些企业和金融系统可能将其设置为仅 3 次尝试;设置在 3 到 5 次之间都是可行的。
如果超过允许的登录尝试次数,下一步操作如下:
1. 实施验证码机制:在登录表单上显示验证码,并强制要求每次登录都必须通过验证,直到用户成功登录,然后将数据库中的登录尝试次数更新为 0。
2. 实施时间锁定机制:在特定时间段内阻止客户端提交登录表单。
3. 封锁账户并强制重置密码:如果存在用户电子邮件,则向其发送密码重置链接,否则用户必须亲自前往你的办公室处理。此选项主要由银行应用程序和金融科技应用使用。
你可以实施其中任何一种方法,或根据喜好组合使用。有些应用程序同时使用这三种方法,而大多数应用程序仅实施验证码或时间锁定机制。
确保你追踪互联网协议地址
免责声明:本文内容来自互联网,该文观点不代表本站观点。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请到页面底部单击反馈,一经查实,本站将立刻删除。