Javascript 如何防止机器人程序和垃圾邮件API请求?

Javascript 如何防止机器人程序和垃圾邮件API请求?,javascript,php,android,laravel,react-native,Javascript,Php,Android,Laravel,React Native,我正在用react native开发一个Android应用程序,该应用程序与我正在为该应用程序开发的API进行通信。该API使用Laravel和Laravel Passport构建 我知道Android应用程序可以反编译,因此可以轻松找到应用程序中存储的任何密钥。这就是我目前采取这种做法的原因 您只能在注册期间获得访问代码。应用程序使用匿名帐户,因此如果您丢失了访问令牌,那就太糟糕了。应用程序向/API/register发出API请求,创建帐户并返回访问令牌。应用程序将存储令牌并使用它发出进一步

我正在用react native开发一个Android应用程序,该应用程序与我正在为该应用程序开发的API进行通信。该API使用Laravel和Laravel Passport构建

我知道Android应用程序可以反编译,因此可以轻松找到应用程序中存储的任何密钥。这就是我目前采取这种做法的原因

您只能在注册期间获得访问代码。应用程序使用匿名帐户,因此如果您丢失了访问令牌,那就太糟糕了。应用程序向
/API/register
发出API请求,创建帐户并返回访问令牌。应用程序将存储令牌并使用它发出进一步的API请求

问题是注册路由不使用任何客户端机密或访问令牌。将路由请求自动化并创建一个机器人大军非常容易。我可以像许多API提供者那样限制请求的数量,但这并不能阻止这个问题

我听说过有效负载哈希,但这通常需要在应用程序和api中都使用salt。再说一次,这是不安全的,如果有人知道垃圾邮件请求的安全性,他们就不能自己散列吗?也许我误解了有效负载哈希的工作原理


希望有人能提供帮助。

您可能需要使用一些东西来检测用户代理是否正在点击路由。此软件包有许多有用的功能:。例如,它提供爬虫检测:

$agent->isRobot();
根据您的主机提供商,您可能有权访问在每分钟X次请求(或其他指标)后自动将ip地址列入黑名单的工具。我知道AWS提供这种服务


另一个选择是。根据ip或地理位置跟踪用户,并相应地重定向/阻止

我现在就在这个路口,我所走的路线是一条挑战用户解决一个简单难题的路线:

  • 应用程序/web上的注册过程收到来自我的注册服务器的挑战
  • 向用户显示质询,并显示输入字段:电子邮件/用户名、密码和质询的答案输入
  • 所有信息都会发送到注册服务器,如果答案不正确,则注册将被拒绝
  • 这个“你是人类”的挑战将阻止机器人注册,因此它需要比编写机器人程序的挑战稍微聪明一点,因此在服务器上选择各种挑战就很好了。 我在考虑“从下拉列表中选择第n个值”、“选择第一个/最后一个选项”、“写入颜色“蓝色”或“3到5之间的整数”等等,对于这些变量,服务器可以轻松生成变量,注册脚本可以轻松创建质询和回答输入,对于用户来说,解决这个问题既简单又不太耗时


    我将探讨的另一个选项是通过IP限制请求,并结合黑白列表。

    您可以设置api限制发布到注册路径的内容以创建帐户?@J.Doe-Yep,这将有助于处理大量垃圾邮件,但对僵尸攻击没有多大作用。@digitaldriver Nothing。路由将创建一个guid作为您的帐户名。这些都是非常棒的建议,我们将对它们进行检查。然而,这两种方法都不能真正阻止我发出curl请求,并创建一个帐户定期发布垃圾邮件(例如为恶意网站做广告)。我想在一天结束的时候,不管你采取了多少步骤来阻止它,总有人会找到一种方法来做这样的事情。由于VPN的存在,禁止IP并不十分有效,但肯定会起到同样的作用。我不知道是否有可能主动阻止以您希望的方式向广泛开放的端点发出请求。如果没有一份全面的名单来确定坏演员,你怎么知道到底是谁提出了这个请求?我知道这样做的唯一方法是需要一些标识符,无论是电子邮件地址、facebook id、SSN等,然后您可以查找并查看他们以前是否注册过。您是否有任何类似于您的注册流程的示例站点/API?我使用过一些看起来工作类似的应用程序,但它们在幕后做了什么?我不确定。我可能想得太远了,因为我还没有现实世界中的问题。你所说的加上recaptcha(我发现应该可以实现)和利率限制的组合在目前应该足够了。然后,当问题出现时,我可以研究如何解决这些问题。