Я хочу защитить некоторые конечные точки от попыток взлома, а также DoS / DDoS-атак, например, логин, сброс пароля, регистрация.
Я хочу реализовать задержку (т. Е. setTimeout
) с линейным или экспоненциальным откатом (без дросселирования):
- запрос 1: без задержки
- запрос 2: 1000 мс
- запрос 3: 1000 мс + х
- запрос 4: 1000 мс + х + у
- ...
Я делал это раньше, но не в узле.
Я понимаю, что злоумышленник не может морить голодом мой пул потоков, запустив тысячи одновременных запросов, потому что в узле нет пула потоков.
Однако каждый запрос приводит к выделению небольшого объема памяти. Таким образом, злоумышленник может запустить тысячи одновременных запросов и исчерпать память моего сервера.
Правильно ли мое понимание? Есть ли элегантный способ справиться с этим, или это неизбежно (и поэтому я должен принять это, или рассмотреть альтернативу, такую как регулирование)?