问题与告警
Shield
Blipit Shield 在服务器端识别暴力破解、撞库、扫描器和注入尝试,并在您选择时于应用内部拦截它们。Node 和 Next.js SDK 以及 Odoo 模块只获取 Blipit 决定的名单并执行。在您为项目开启之前,Shield 一直处于关闭状态。
1Node.js
使用密钥,在路由之前加入中间件。如果应用位于代理或负载均衡器之后,把 trustProxy 设为应用前面的代理数量。actor 返回正在登录的账户,这样被封禁的账户也会被拒绝。Fastify:app.addHook("onRequest", shield.fastify)。
import * as Blipit from "@blipit/node";
import express from "express";
const app = express();
app.use(express.json());
app.use(Blipit.shield({ trustProxy: 1, actor: (req) => req.body?.email }));2Next.js
包裹您的 middleware.ts。它运行在 Edge 运行时并读取 BLIPIT_SECRET_KEY。如需保留自己的中间件,把它传入:withBlipitShield(yourMiddleware)。
import { withBlipitShield } from "@blipit/nextjs/shield";
export const middleware = withBlipitShield();3Odoo
无需额外操作。从模块版本 1.18.14 起,Shield 开启后 Odoo 会在每个页面和每次登录时执行同一份名单。
4工作方式
- 被封禁的 IP 和账户收到 403 和一条简短的纯文本消息;登录频率限制返回 429 并附带 Retry-After。
- 名单每 30 秒在后台刷新一次,因此请求从不等待 Blipit。如果无法连接 Blipit,上一份名单继续有效。
- 测试模式下不拦截任何请求;Blipit 统计本会被拦截的数量。
- 您的应用每分钟发送一次各项封禁的命中次数,并在 Shield 开启期间发送少量请求样本:路径、方法、状态、IP、用户代理以及去除了机密的查询字符串。从不发送请求头、Cookie、密码和请求正文。
遇到问题?发邮件至 support@blipit.io。每个项目的密钥和项目 id 在 app.blipit.io 的“API 密钥”下。