我网站上的“成为客户”按钮要求 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 客户端点是公开的。我不想公开。我该如何解决这个问题?的主要内容,如果未能解决你的问题,请参考以下文章
WCF 上的一项服务、多个端点、多个绑定。为啥我无法到达我的端点?