首页 > 解决方案 > 无需凭据即可保护 API 路由

问题描述

我有一个表单来检查电子邮件是否已经在我的数据库中(/api/user?email=user@example.com),如果是,它会回复他们的信息。

我似乎无法找到一种方法来保护我的 API 路由免受有人去邮递员的攻击,而只是暴力破解GET https://example.com/api/user?email=name@domain.com并收集个人信息。

我需要此功能而无需任何登录凭据。我知道必须有一种行业标准的方式来做到这一点。有保险提供商使用他们的表格来做到这一点。(例如,一旦您输入您的电子邮件,它就会用您的名字向您打招呼,并要求您完成填写表格。)

换句话说 - 我需要我的 api 路由以某种方式区分发出这些请求的合法浏览器或具有不同意图的人。

标签: reactjsroutesnext.jsserver-side-renderingnext-auth

解决方案


没有标准,但您可以保护您的路线免受暴力:

  1. 添加速率限制以避免来自小范围 IP 的暴力破解
  2. 添加验证码检查以避免非客户端请求和廉价机器人。
  3. 为每个用户生成会话(或散列 URL),并只允许用户通过输入电子邮件来完成表单
  4. 使用 csrf 令牌避免非客户端请求

推荐阅读