Me gustaría comprender mejor los ataques de DOS (denegación de servicio) y me gustaría saber cuáles son mis opciones para aprender sobre ellos con un ejemplo.
Tengo un servidor express básico.
app.get('/ping', (req, res) => { res.send({ pong: 'pong', time: new Date().valueOf(), memory: process.memoryUsage()}) })Crearé por separado un código javascript que haga múltiples solicitudes al servidor. pero no sé idear estrategias para intentar derribar el servidor (considere que todo esto se ejecuta en localhost)
Quiero ver cuál es el límite superior de hacer solicitudes cuando se prueba esto localmente. Estoy experimentando lo que se describe aquí: enviar miles de solicitudes de recuperación bloquea el navegador. Sin memoria
... las sugerencias en ese hilo están más en la línea de "navegador que se está quedando sin memoria" y que debería "acelerar las solicitudes"... pero estoy tratando activamente de maximizar las solicitudes que el navegador puede hacer sin bloquearse. hasta ahora mis observaciones son que el servidor no tiene ninguna dificultad. (Entonces, ¿quizás también debería hacer solicitudes desde mi teléfono y tableta?)
el código que se ha ejecutado en el navegador no es mucho más que:
const makeRequestAndAlogTime = () => { const startTime = new Date().valueOf(); fetch('http://localhost:4000/ping') .then(async (response) => { const { time, memory } = await response.json(); console.log({ startTime: 0, processTime: time - startTime, endTime: new Date().valueOf() - startTime, serverMemory: memory, browserMemory: performance['memory'] }) }) } for(let x = 0; x < 100; x++) { makeRequestAndAlogTime() } pero dependiendo del valor que introduzco para la cantidad de veces que pasa por el ciclo for , el rendimiento es más lento y eventualmente falla (como se esperaba)... pero quiero saber si hay alguna manera de automatizar la determinación del límite superior de solicitudes que puedo hacer en mis navegadores?