Проверяет понимание методов защиты публичных форм от автоматизированного спама и ботов, что критично для стабильности и безопасности веб-приложения.
Массовая отправка заявок ботами — типичная проблема публичных форм. Боты сканируют сайты, находят формы и заливают их спамом, что засоряет базу, нагружает сервер и может привести к рассылке через ваш SMTP. Защита строится по принципу эшелонированной обороны: чем больше независимых слоёв, тем дороже атака для бота.
const rateLimit = require('express-rate-limit');
const limiter = rateLimit({ windowMs: 60_000, max: 5 });
app.post('/feedback', limiter, async (req, res) => {
const { name, email, message, honeypot, token, ts } = req.body;
// 1. Honeypot: поле должно быть пустым
if (honeypot) return res.status(400).send('Bot detected');
// 2. Слишком быстрая отправка
if (Date.now() - ts < 2000) return res.status(400).send('Too fast');
// 3. Проверка капчи
const ok = await verifyRecaptcha(token);
if (!ok) return res.status(400).send('Captcha failed');
// 4. Валидация и сохранение
if (!email.includes('@')) return res.status(400).send('Bad email');
await saveFeedback({ name, email, message });
res.send('OK');
});Rate limiting отсекает грубые атаки ещё до бизнес-логики. Honeypot и проверка времени дешёвы и ловят простых ботов без внешних сервисов. CAPTCHA добавляет стоимость для продвинутых ботов, но ухудшает UX, поэтому её часто включают только при подозрительной активности. CSRF-токен и серверная валидация закрывают подделку и мусорные данные.
Итог: применяйте комбинацию honeypot, rate limiting и серверной валидации как базовый уровень, а CAPTCHA подключайте при реальных атаках или на формах с высокой ценой спама.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию