Уязвимость, связанная с медленной публикацией (RU пока мертв) - Express.js - ограничение скорости передачи данных Решение?
Я пытаюсь решить проблему уязвимости, связанной с медленной публикацией в моем приложении.
Чтобы ограничить количество подключений от пользователя, я использовал express-rate-limit, чтобы приложение не оставалось недоступным.
const rateLimit = require('express-rate-limit')
const limiter = rateLimit({ windowMs: 60 * 1000, // 1 minute max: 100 // limit each IP to 100 requests per windowMs })
app.use(limiter)
Но если я попытаюсь протестировать свое приложение с помощью slowtesttool и запустить тест с 2 подключениями (со скоростью 1 подключение в секунду и последующие данные каждые 10 секунд), я вижу, что подключения никогда не закрываются.
Я установил тайм-аут для подключения, как показано ниже, но похоже, что это не работает!
app.use((req, res, next) => {
req.connection.setTimeout(30000, () => {
req.socket.end()
})
next()
})
Есть ли способ ограничить скорость приема данных, то есть указать максимальное время, в течение которого я могу ждать каждого следующего фрагмента тела?
1 ответ
Одним из решений может быть использование возможностей вашего переднего веб-сервера (я предполагаю, что вы разместите свое приложение за сервером, таким как nginx, apapche, caddy, ...).