如何在 Nuxt 中设置利率限制

2026年8月7日6 次浏览来源:Dev.to阅读原文

直到凌晨3点有人敲打你的登录端点, 我把这个加进我的Nuxt基层 之后,我意识到,我运送了几个项目 在认证路线上的零保护。

情况不妙 这篇文章贯穿了我现在使用的确切设置: Redis背后, Redis倒下时的内幕倒计时,为不同的敏感级别命名了预设,以及一个显示活倒倒倒数的页面,而不是仅仅死在用户身上.

结构 三块,每个有一份工作: ——一个制造限制器的工厂,使用有内幕倒计时的Redis——你所说的内部处理器执行限制——全球中间器件,这样每个路线都能得到免费1的基准.

安装完成举重:滑动窗口,Redis集成,以及我们将使用的保险倒置模式.

2.

工厂 创造:我想在此强调的两件事:懒惰初始化:限制器基于第一个请求,而不是在进口时自行建立.

这避免了在模块被首次加载时配置或服务可能无法准备的环境出现初始化-订单问题.

无法打开: 当Redis 投出出出意料的东西时, 请求会通过 。

我宁愿有一个暂时没有保护的终点 也不愿让一个限制器的bug 将每个用户的整个应用程序都删除 对于一个特别敏感的系统,你可能会决定失败而关闭。

3.

预设 并非所有路线都应该得到同样的待遇。

页面视图和密码重置请求是截然不同的风险.

在同一文件底部添加命名的预设 : 所有限制都通过环境变量压倒性.

您不需要更改应用程序代码以收紧其生产 。

4.

帮助者 Create : 当您的 Nuxt 应用程序在 Cloudflare , nginx 或另一个反向代理后方时, IP 解析命令很重要 。

可能只包含您的代理服务器IP,而不是实际客户端的地址.

帮助者按优先级检查常见的转发头并返回 。

只有请求通过您控制的基础设施到达您的应用程序时,才能信任这些信头 。

否则,客户可能能够窥探他们。

参数允许您在必要时使用IP地址以外的东西限制请求.

5.

Global Middreaterware 创建:每条路线现在都获得一个基线限制,而不触及其单个处理器.

静态资产和Nuxt内部被跳出。

页数限制仅适用于请求。

6.

敏感路线的分层限制 全球的中间软件是你的地板。

对于敏感的端点,堆放第二,更紧的上限.

两项限制都独立倒计时,所以一项请求必须同时通过.

对于密码重置和类似的端点,我用电子邮件而不是IP键入限制器.

攻击者可以旋转IP地址,但目标电子邮件保持不变: 您也可以合并电子邮件地址和IP: 正确的密钥取决于你在保护什么。

7.

内页,从错误数据中抽取并显示倒计时,当页面达到零时重新加载: 用户不需要做其他事情。

当请求窗口重排时,页面会自动重装.

8.

环境变量汇总文件责任工厂和命名预设 这里的默认是保守的.

根据你们的实际交通情况来调整 记忆回落意味着您可以在添加Redis之前将它运出,并在以后升级而不改变整个应用程序使用的API.

因此,我把执行工作保留在我的可重复使用的Nuxt基层中:每个新项目都从已有的基本保护开始,而不是等到第一次滥用请求到来。

我最初在个人博客上发表这个教程, 读取原始 Nuxt 速率限制

分享