如何防止机器人使用 REST API 调用从移动应用注册新用户?

Posted

技术标签:

【中文标题】如何防止机器人使用 REST API 调用从移动应用注册新用户?【英文标题】:How to prevent bots using REST API calls to register new users from an mobile app? 【发布时间】:2013-10-13 01:06:57 【问题描述】:

我想在 django-tastypie 中为移动应用编写一个带有 REST API 的后端应用程序。

如果我将 POST 数据(用户对象)发送到例如http://localhost:8000/api/v1/register/ 在我的移动应用程序中注册一个新用户,每个知道 url 的人都可以注册新用户并炸毁我的数据库。我该如何防止这种情况?使用 REST-API 进行用户注册是一种错误的方法吗?有人可以指出我正确的方向吗?我不想使用 OAuth 登录我的用户。

【问题讨论】:

呃...要求用户回答某种CAPTCHA?它从来都不漂亮,但却是事实上的约定。 我不认为验证码是移动应用程序的正确方式。你在移动设备上注册 twitter、facebook、instagram 等时见过这个吗? 从未测试过 TBH,虽然我上次检查 Facebook 桌面注册过程时,手机号码或多或少是一项要求 - 他们有一个系统,可以向您发送一个 4 位数的验证码这是您的设备 - 验证码是一种便宜且令人愉快的选择(如果在短时间内来自同一 IP 的多个请求,则只显示一个有什么问题?这样您就不会给任何似乎没有滥用的人带来不便服务)。 添加一个人类不会填写但机器人可能会填写的“蜜罐”隐藏字段怎么样?如果蜜罐是“满的”,意味着它有一个值,那么表单是无效的。 您可以添加一个应用程序密钥,只允许授权的应用程序访问您的资源。 【参考方案1】:

一切都取决于您在移动应用程序上存储数据的安全程度...

如果您非常确定可以通过您的应用程序将某些内容安全地存储在手机上,最简单的解决方案是在您的前端服务器上设置证书身份验证,在这种情况下,每个没有正确证书的连接都会失败

这是一个非常简单的解决方案,不需要对后端代码进行任何更改,只需对客户端进行少量更改(使用证书)

【讨论】:

以上是关于如何防止机器人使用 REST API 调用从移动应用注册新用户?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 HTML 表单调用现有的 REST api?

如何防止搜索机器人每次调用 API

如何保护 REST-API?

什么是 OAuth,它如何保护 REST API 调用? [关闭]

授权代码流,将代码从移动应用程序发送到 REST API

防止不受信任的客户端使用 REST API 的登录/注册端点