Php 如何防止自动请求my Laravel/Lumen api?

Php 如何防止自动请求my Laravel/Lumen api?,php,laravel,api,backend,lumen,Php,Laravel,Api,Backend,Lumen,因此,我打算将后端与前端完全分离。我正在学习Laravel/Lumen API,我打算以JSON格式返回数据库数据,供前端开发人员使用 我在Stack Overflow上读过几个类似的帖子,并观看了一些YouTube视频。大多数人建议我应该为“授权”用户生成一个令牌。然而,问题是我的项目没有登录系统。我的所有用户都是来宾用户。所以,我不能先授权一个人,然后为他们生成令牌 据我所知(这可能有缺陷),LaravelAPI遵循RESTful系统。所以,它是无状态的,我不能使用CSRF令牌来检查请求是否

因此,我打算将后端与前端完全分离。我正在学习Laravel/Lumen API,我打算以JSON格式返回数据库数据,供前端开发人员使用

我在Stack Overflow上读过几个类似的帖子,并观看了一些YouTube视频。大多数人建议我应该为“授权”用户生成一个令牌。然而,问题是我的项目没有登录系统。我的所有用户都是来宾用户。所以,我不能先授权一个人,然后为他们生成令牌

据我所知(这可能有缺陷),LaravelAPI遵循RESTful系统。所以,它是无状态的,我不能使用CSRF令牌来检查请求是否来自提交的表单,并且它不是自动的。那么,我还有什么选择呢

我想将自动请求与来自表单的请求分开的原因是,有时我必须对某些请求进行繁重的处理,我不希望自动脚本发送大量请求并导致DOS攻击


非常感谢您的帮助。

速率限制有助于防止自动脚本。默认情况下,Laravel通过Throttle中间件实现了这一点。默认油门为60:1,
油门:60,1
,如果在1分钟内记录了60次尝试,则转换为油门

该中间件应用于所有路由,但是,您可以为单个路由覆盖该中间件,并为尝试次数和时间定义自定义值。以下根据文档改编的示例配置了在1分钟内尝试30次油门的路线:

Route::middleware('auth:api', 'throttle:30,1')->group(function () {
    Route::get('/user', function () {
        //
    });
});
还有其他配置选项,请参阅文档了解更多信息

Laravel如何检查来宾用户发送的请求是否过多

从最基本的角度讲,Laravel跟踪应用程序缓存中特定IP对特定端点/域的命中。请求域和IP用作缓存密钥。每次命中端点时,缓存中存储的尝试次数都会增加。如果尝试次数在路由上应用的
节流
配置中指定的时间窗口内达到允许的最大尝试次数,则该IP将被锁定一段时间


如果时间窗口中没有新的点击,尝试将自动清除。

速率限制有助于防止自动脚本。默认情况下,Laravel通过Throttle中间件实现了这一点。默认油门为60:1,
油门:60,1
,如果在1分钟内记录了60次尝试,则转换为油门

该中间件应用于所有路由,但是,您可以为单个路由覆盖该中间件,并为尝试次数和时间定义自定义值。以下根据文档改编的示例配置了在1分钟内尝试30次油门的路线:

Route::middleware('auth:api', 'throttle:30,1')->group(function () {
    Route::get('/user', function () {
        //
    });
});
还有其他配置选项,请参阅文档了解更多信息

Laravel如何检查来宾用户发送的请求是否过多

从最基本的角度讲,Laravel跟踪应用程序缓存中特定IP对特定端点/域的命中。请求域和IP用作缓存密钥。每次命中端点时,缓存中存储的尝试次数都会增加。如果尝试次数在路由上应用的
节流
配置中指定的时间窗口内达到允许的最大尝试次数,则该IP将被锁定一段时间


如果在时间窗口中没有新的点击,尝试将自动清除。

虽然这可能不是您想要的答案,但限速是一种选择。至少可以说,默认情况下,laravel实现了这一点。这些东西是由laravel为您处理的。一定要从上面的回复中读到关于速率限制的内容。@user3532758实际上,这听起来确实像我要找的。非常感谢。唯一的问题是,文档没有充分解释如何处理这一费率限制。Laravel如何检查来宾用户发送的请求是否过多?是IP地址吗?是通过cookie/会话进行的吗?如果自动脚本每次都删除会话cookie怎么办?@stressedout如果我没有弄错的话,laravel使用IP。laravel使用IP进行速率限制,记住,它是无状态的,因此根据定义不需要cookie/会话。您还可以将重载请求置于身份验证之后,这将限制其访问权限。虽然这可能不是您想要的答案,但速率限制是一种选择。至少可以说,默认情况下,laravel实现了这一点。这些东西是由laravel为您处理的。一定要从上面的回复中读到关于速率限制的内容。@user3532758实际上,这听起来确实像我要找的。非常感谢。唯一的问题是,文档没有充分解释如何处理这一费率限制。Laravel如何检查来宾用户发送的请求是否过多?是IP地址吗?是通过cookie/会话进行的吗?如果自动脚本每次都删除会话cookie怎么办?@stressedout如果我没有弄错的话,laravel使用IP。laravel使用IP进行速率限制,记住,它是无状态的,因此根据定义不需要cookie/会话。您还可以将重载请求置于身份验证之后,这将限制其访问权限。因此,如果我理解正确,如果用户达到最大限制,假设我们的油门设置为每1分钟60个请求,那么用户将无法再访问API 1分钟。我说得对吗?此外,您的中间件正在使用auth:api。如果我没有身份验证系统,我应该删除该部分并仅使用油门部分?是和是。如果不需要,您可以删除身份验证。谢谢。因此,如果我理解正确,如果用户达到最大限制,假设我们的油门设置为每1分钟60个请求,那么用户将无法acc