如何保护公共 API 免受滥用?

sum*_*n j 5 api ajax spam-prevention public-method

给定一个向用户触发 OTP 验证的公共 API,有没有办法防止此类 API 被滥用/垃圾邮件?

这个 API 是公开的,有商业原因,所以在公共方面提供。API 是使用 Java Spring MVC 开发的,并且启用了 CORS 以允许来自特定域。然而,仅凭这一点可能无法防止垃圾邮件命中。

  1. 我是否需要使用 SessionID 来保护 API?(但 sessionId 也可以很容易地从浏览器中抓取垃圾邮件)
  2. 是否有一种万无一失的方法来检测传入请求是否来自特定域并且仅是 AJAX 请求?这可能会限制调用。(排除脚本)
    1. 我需要使用验证码类型的服务吗?

这(防止公共 API 垃圾邮件)似乎是一个常见的场景。是否有清除垃圾邮件的最佳做法?