我网站上的“成为客户”按钮要求 POST 客户端点是公开的。我不想公开。我该如何解决这个问题?

Posted

技术标签:

【中文标题】我网站上的“成为客户”按钮要求 POST 客户端点是公开的。我不想公开。我该如何解决这个问题?【英文标题】:"Become customer" button on my website requires the POST customer endpoint to be public. I don't want it public. How do I get around this? 【发布时间】:2019-08-02 23:04:01 【问题描述】:

我有一个 Web 应用程序通过几个 REST 端点与后端通信。

我还有一个主页,人们可以在其中成为上述网络应用的客户。

所有 Web 应用程序的端点都需要调用身份验证(登录用户)(JWT 令牌),但在我的主页上我有一个“成为客户”按钮,它发出一个 POST /customers 请求,我必须公开(但我不希望任何人能够向我的端点发送新客户的垃圾邮件。

解决这个问题的标准方法是什么?

我在后端使用 Python、Flask 和 Flask-JWT。

【问题讨论】:

验证码和速率限制是针对 DOS 攻击的典型防御措施。 你不能。你真的认为主要服务(Facebook、Twitter、Instagram ......)没有通过发送垃圾邮件注册按钮自动创建的虚假用户吗?你可以添加一个 reCaptcha 或类似的东西来缓解它,但你可能无法完全阻止它。 【参考方案1】:

唯一的选择是在有限的时间内(30 分钟)添加一个用户角色。如果用户具有此角色,则他们有权查看它。

有意义吗?

【讨论】:

以上是关于我网站上的“成为客户”按钮要求 POST 客户端点是公开的。我不想公开。我该如何解决这个问题?的主要内容,如果未能解决你的问题,请参考以下文章

静态网站不希望使用简单的POST端点

触发 API 网关端点时 COR 配置错误

WCF 上的一项服务、多个端点、多个绑定。为啥我无法到达我的端点?

对盈透证券客户端 Web API 的任何 POST 请求的 403 响应代码

WCF回调实现[关闭]

Paypal 结帐按钮未将自定义字段传递给 PIN 消息