如何防止对我的 Laravel/Lumen api 的自动请求?
How to prevent automated requests to my Laravel/Lumen api?
所以,我打算把我的后端和我的前端完全分开。我正在学习 Laravel/Lumen API,我打算 return 我的数据库数据以 JSON 格式供我的前端开发人员使用。
我在 Stack Overflow 上阅读了几个类似的帖子并观看了一些 YouTube 视频。他们中的大多数人建议我应该为“授权”用户生成一个令牌。但是,问题是我的项目没有登录系统。我的所有用户都是来宾用户。所以,我不能先授权一个人,然后再为他们生成一个令牌。
根据我的理解(可能有缺陷),Laravel API 遵循 RESTful 系统。因此,它是无状态的,我不能使用 CSRF 令牌来检查请求是否来自提交的表单并且它不是自动的。那么,我还有哪些其他选择?
我想将自动请求与来自表单的请求分开的原因是有时我必须对某些请求进行繁重的处理并且我不希望自动脚本发送大量请求并导致 DOS 攻击。
感谢任何帮助。
速率限制有助于防止自动脚本。 Laravel 默认情况下通过 Throttle 中间件实现了这一点。默认限制为 60:1、throttle:60,1
,如果在 1 分钟内注册了 60 次尝试,则转换为限制。
此中间件适用于所有路由,但是,您可以为个别路由覆盖它并为尝试次数和时间定义自定义值。如果 1 分钟内有 30 次尝试,以下改编自文档的示例将路由配置为节流:
Route::middleware('auth:api', 'throttle:30,1')->group(function () {
Route::get('/user', function () {
//
});
});
还有其他配置选项,请参阅文档以获取更多信息。
https://laravel.com/docs/7.x/routing#rate-limiting
How does Laravel check that a guest user has sent too many requests?
用非常基本的术语来说,Laravel 跟踪应用程序缓存中特定 IP 对特定 endpoint/domain 的点击。请求域和 IP 用作缓存键。每次命中端点时,存储在缓存中的尝试次数都会增加。如果尝试次数在 throttle
配置中指定的时间 window 内达到允许的最大尝试次数,该 IP 将被锁定一段时间。
如果在 window 时间内没有新的命中,尝试将自动清除。
所以,我打算把我的后端和我的前端完全分开。我正在学习 Laravel/Lumen API,我打算 return 我的数据库数据以 JSON 格式供我的前端开发人员使用。
我在 Stack Overflow 上阅读了几个类似的帖子并观看了一些 YouTube 视频。他们中的大多数人建议我应该为“授权”用户生成一个令牌。但是,问题是我的项目没有登录系统。我的所有用户都是来宾用户。所以,我不能先授权一个人,然后再为他们生成一个令牌。
根据我的理解(可能有缺陷),Laravel API 遵循 RESTful 系统。因此,它是无状态的,我不能使用 CSRF 令牌来检查请求是否来自提交的表单并且它不是自动的。那么,我还有哪些其他选择?
我想将自动请求与来自表单的请求分开的原因是有时我必须对某些请求进行繁重的处理并且我不希望自动脚本发送大量请求并导致 DOS 攻击。
感谢任何帮助。
速率限制有助于防止自动脚本。 Laravel 默认情况下通过 Throttle 中间件实现了这一点。默认限制为 60:1、throttle:60,1
,如果在 1 分钟内注册了 60 次尝试,则转换为限制。
此中间件适用于所有路由,但是,您可以为个别路由覆盖它并为尝试次数和时间定义自定义值。如果 1 分钟内有 30 次尝试,以下改编自文档的示例将路由配置为节流:
Route::middleware('auth:api', 'throttle:30,1')->group(function () {
Route::get('/user', function () {
//
});
});
还有其他配置选项,请参阅文档以获取更多信息。
https://laravel.com/docs/7.x/routing#rate-limiting
How does Laravel check that a guest user has sent too many requests?
用非常基本的术语来说,Laravel 跟踪应用程序缓存中特定 IP 对特定 endpoint/domain 的点击。请求域和 IP 用作缓存键。每次命中端点时,存储在缓存中的尝试次数都会增加。如果尝试次数在 throttle
配置中指定的时间 window 内达到允许的最大尝试次数,该 IP 将被锁定一段时间。
如果在 window 时间内没有新的命中,尝试将自动清除。