Три базовых, но эффективных подхода, которые стоит внедрить в любом API:
limit_req_zone $binary_remote_addr zone=api_limit:10m rate=10r/s;
location /api/ {
limit_req zone=api_limit burst=20 nodelay;
}
const rateLimit = require("express-rate-limit");
const limiter = rateLimit({
windowMs: 15 * 60 * 1000,
max: 100
});
app.use("/api/", limiter);
const cors = require('cors');
app.use(cors({
origin: 'https://yourfrontend.com'
}));
Не забудьте запретить * в production - это дырка в безопасности.
const jwt = require('jsonwebtoken');
function authenticateToken(req, res, next) {
const token = req.headers['authorization']?.split(' ')[1];
if (!token) return res.sendStatus(401);
jwt.verify(token, process.env.ACCESS_TOKEN_SECRET, (err, user) => {
if (err) return res.sendStatus(403);
req.user = user;
next();
});
}
Итого:
Rate Limiting - спасает от злоупотреблений.
CORS - управляет доступом между доменами.
Token-based доступ - дает безопасность и гибкость.
Правильная комбинация этих механизмов - основа для защиты любого публичного API.
#API #security
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤1