TGViewer
NetworkAdmin.ru NetworkAdmin.ru @networkadminru · 4.7K subscribers
Post #537 2.61K
👣 Как защищать API-интерфейсы

Три базовых, но эффективных подхода, которые стоит внедрить в любом API:

1️⃣ Rate Limiting - ограничение количества запросов. Ограничивает количество запросов от одного IP, токена или пользователя за определённый интервал времени. Защищает от: DDoS-атак, брутфорса, скрейпинга.

📍 В NGINX:


limit_req_zone $binary_remote_addr zone=api_limit:10m rate=10r/s;

location /api/ {
limit_req zone=api_limit burst=20 nodelay;
}


📍 В Express.js (Node.js):


const rateLimit = require("express-rate-limit");

const limiter = rateLimit({
windowMs: 15 * 60 * 1000,
max: 100
});

app.use("/api/", limiter);


2️⃣ CORS (Cross-Origin Resource Sharing). Механизм безопасности браузера, позволяющий указать, какие домены могут обращаться к API.

📍 Пример настройки CORS в Express.js:


const cors = require('cors');
app.use(cors({
origin: 'https://yourfrontend.com'
}));


Не забудьте запретить * в production - это дырка в безопасности.

3️⃣ Token-Based Access (JWT / OAuth2). Пользователь аутентифицируется, получает токен и использует его для доступа к API. Сервер проверяет подпись токена.

📍 Пример в Express.js:


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

🧑‍💻 NetworkAdmin
  • 👍 7
  • ❤ 1
More from @networkadminru
  1. Oct 1, 2026✨ Systemd-команды, которые быстро дают информацию о системе У systemd есть несколько коман…
  2. Oct 1, 2026CENTI CONF: DevOps Day — митап по разработке и инженерным решениям ⚡️ 6 ноября Centicore G…
  3. Sep 30, 2026🖥 Get-ADUser: полезные примеры для работы с пользователями Active Directory Get-ADUser -…
  4. Sep 29, 2026🥱 Как быстро разобраться с дисками и маунтами Когда на сервере несколько дисков, LVM, отд…
  5. Sep 28, 2026🔎 TCP keepalive: как находить мертвые соединения до того, как они создадут проблему Иногд…
  6. Sep 25, 2026🤩 Как расшифровать код ошибки Windows через certutil При установке обновлений Windows ран…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →