Защита конечных точек узла / экспресса от атак через задержку с откатом - PullRequest
1 голос
/ 13 марта 2019

Я хочу защитить некоторые конечные точки от попыток взлома, а также DoS / DDoS-атак, например, логин, сброс пароля, регистрация.

Я хочу реализовать задержку (т. Е. setTimeout) с линейным или экспоненциальным откатом (без дросселирования):

  • запрос 1: без задержки
  • запрос 2: 1000 мс
  • запрос 3: 1000 мс + х
  • запрос 4: 1000 мс + х + у
  • ...

Я делал это раньше, но не в узле.

Я понимаю, что злоумышленник не может морить голодом мой пул потоков, запустив тысячи одновременных запросов, потому что в узле нет пула потоков.

Однако каждый запрос приводит к выделению небольшого объема памяти. Таким образом, злоумышленник может запустить тысячи одновременных запросов и исчерпать память моего сервера.

Правильно ли мое понимание? Есть ли элегантный способ справиться с этим, или это неизбежно (и поэтому я должен принять это, или рассмотреть альтернативу, такую ​​как регулирование)?

1 Ответ

2 голосов
/ 13 марта 2019

Добавление защиты DDoS на уровне приложений - плохая практика.Это должно быть реализовано предыдущими уровнями, например.WAF / Cloudflare.

Троттлинг хорош для обработки больших пакетов данных.Для HTML-контента будет сложно рассматривать их как реальную безопасность.Лучше ограничить количество одновременных подключений, например, в nginx.

Только в конце вы можете реализовать ограничения в приложении. И не должно быть задержек .Ваша цель - обработать запрос как можно скорее.Итак, вводится некоторая форма ограничения скорости ( HTTP 429 Too Many Requests )

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...