如何防止对我的 Laravel/Lumen api 的自动请求?

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

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

据我了解(可能有缺陷),Laravel API 遵循 RESTful 系统。因此,它是无状态的,我无法使用 CSRF 令牌来检查请求是否来自提交的表单,并且它不是自动化的。那么,我还有什么其他选择呢?

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

任何帮助表示赞赏。


白猪掌柜的
浏览 136回答 1
1回答

白板的微信

速率限制可以帮助防止自动脚本。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-limitingLaravel 如何检查访客用户是否发送了太多请求?用非常基本的术语来说,Laravel 通过应用程序缓存中的特定 IP 来跟踪特定端点/域的命中。请求域和IP用作缓存键。每次命中端点时,存储在缓存中的尝试次数都会增加。如果在路由应用的配置中指定的时间窗口内尝试次数达到允许尝试的最大次数throttle,则该 IP 将被锁定一段时间。如果时间窗口内没有新的点击,尝试将自动清除。
打开App,查看更多内容
随时随地看视频慕课网APP