Ho sentito dire che un servizio che sto usando sul web ha alcuni problemi con il rifiuto del servizio. Mi chiedevo se fosse teoricamente possibile creare un servizio web in cui l'utente può inviare dati e che è immune ai DOS?
DoS è esattamente ciò che significa "l'utente può inviare dati"; come fai a dire tra un utente legittimo e qualcuno / qualcosa che emula un utente legittimo solo per causare problemi? Spesso non puoi.
Per gli attacchi di esaurimento della larghezza di banda la mitigazione è semplice, è necessario avere più larghezza di banda rispetto all'attaccante; o facendolo tu stesso o affidandoti a un provider che si trova tra Internet e i tuoi server e ha una larghezza di banda maggiore di quella che la maggior parte degli hacker (tutti?) può avere. Cloudflare è un esempio.
Per gli attacchi a livello di applicazione, quelli che tentano di bloccare / rallentare il server sovraccaricando è più difficile da mitigare; se si tratta di un'applicazione Web, è possibile utilizzare la memorizzazione nella cache per evitare di elaborare la pagina su ogni richiesta e restituire invece una versione memorizzata nella cache; potresti anche limitare il numero di richieste al secondo a quello che è ragionevole per il normale utilizzo del tuo servizio, un'altra idea è quella di mettere le pagine ad alta intensità di risorse dietro all'autenticazione in modo che solo i tuoi legittimi clienti possano accedervi, ma all'esterno gli hacker otterrebbero un 403 senza facendo in modo che il server elabori ciò che la pagina doveva mostrare - ovviamente la soluzione non è perfetta, poiché un utente legittimo può avere il suo account compromesso per eseguire l'attacco o che tu hai reso triste quell'utente "legittimo" e lui è ora arrabbiato con te e vuole vendetta (ho visto che succede nelle comunità di videogiochi malinconicamente piene di kiddies).
Leggi altre domande sui tag web-application denial-of-service