如何阻止漫游器和垃圾邮件API请求?

时间:2018-07-27 09:36:43

标签: javascript php android laravel react-native

我正在使用react-native开发Android应用,并且该应用与正在为该应用开发的API通信。该API是使用Laravel和Laravel Passport构建的。

我知道可以对Android应用程序进行反编译,因此可以轻松找到该应用程序中存储的所有秘密密钥。这就是我采用当前方法的原因。

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

问题在于注册路由未使用任何客户端机密或访问令牌。自动执行对路线的请求并创建机器人大军非常容易。我可能会像许多API提供程序一样限制请求的数量,但这并不能阻止问题。

我听说过有效负载散列,但这通常需要在应用程序和api中都包含盐。再说一次,这是不安全的,如果有人知道垃圾邮件请求的内容,有人就不能自己对其进行哈希处理吗?也许我误会了有效负载散列的工作原理。

希望有人可以提供帮助。

2 个答案:

答案 0 :(得分:1)

您可能想要使用某种方法来检测用户代理是否到达路由。该软件包具有许多有用的功能:jenssegers/agent。例如,它提供爬网程序检测:

$agent->isRobot();

根据托管服务提供商的不同,您可能可以使用在每分钟X次请求数量(或其他指标)之后自动将IP地址列入黑名单的工具。我知道AWS提供这项服务。

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

答案 1 :(得分:0)

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

  1. 应用程序/网络上的注册过程从我的注册服务器收到一个挑战
  2. 挑战显示给用户,输入字段包括:电子邮件/用户名、密码和挑战的答案输入
  3. 这一切都会被发送到注册服务器,如果答案不正确,注册将被拒绝

这个“你是人类”的挑战是什么将停止机器人注册,所以它需要比机器人编码更聪明一点,所以在服务器上选择各种挑战会很好。 我正在考虑“从下拉列表中选择第 n 个值”、“选择第一个/最后一个选项”、“写下颜色‘蓝色’”或“3 到 5 之间的整数”等等,对于哪些变量可以由服务器轻松生成,挑战和答案输入可以通过注册脚本轻松创建,并且用户解决起来简单且不费时。

我将探索的另一个选项是按 IP 限制请求,并结合将这些请求列入黑名单和白名单。