How can I defend against malicious GET requests?
Queste richieste non sembrano davvero dannose. Almeno in base alla descrizione, non causano alcun danno, ad esempio l'esecuzione di codice indesiderato, l'iniezione SQL o attacchi simili. Hanno solo bisogno di risorse da elaborare. Quello che vedi è ciò che ogni operatore di un server Web può vedere nei file di log: molte richieste che non corrispondono a nulla esistente sul server perché qualcuno sta eseguendo la scansione di Internet e sta cercando sistemi vulnerabili. Inoltre, queste richieste possono anche essere causate da modifiche al tuo sito in cui gli URL precedentemente validi non sono più validi, ma i robot ricordano ancora i vecchi URL e li controllano per gli aggiornamenti.
Se queste richieste ti infastidiscono, puoi cambiare la tua applicazione per ignorare tali richieste (e non registrarle come errori) o filtrare queste richieste da un server / reverse proxy davanti alla tua applicazione.
Sebbene il firewall per applicazioni Web suggerito (WAF) possa filtrare tali richieste, considererei eccessivo installarne uno solo per filtrare queste richieste innocue. Ma se usato correttamente (ossia adattato all'applicazione anziché solo installato e dimenticato come spesso accade) può essere un utile livello di protezione. E anche se il fail2ban suggerito può essere d'aiuto, è utile solo se queste richieste provengono solo da pochi singoli indirizzi IP, il che spesso non avviene. Inoltre un affidamento su fail2ban può bloccare utenti validi poiché i link non validi al tuo sito possono essere inclusi in mail o altri siti Web e quindi l'indirizzo IP di origine della richiesta non è l'autore dell'attacco ma un innocente che è stato indotto a visitare questo link. Ma fail2ban vede solo l'IP di origine e il messaggio di errore e quindi blocca l'utente innocente.
Quello che dovresti fare è assicurarti che la tua applicazione non sia vulnerabile e OWASP sia una buona risorsa per imparare a proteggere le applicazioni web. Se la tua applicazione è sicura, non ha problemi a gestire questo tipo di richieste. Tuttavia, per limitare l'utilizzo delle risorse da richieste non valide è necessario assicurarsi che tali richieste vengano rilevate e rifiutate il prima possibile nell'applicazione, vale a dire che sarebbe male se le richieste non valide attivassero anche query costose su un database.