L'architettura client-server è un modello di progettazione software in cui un componente, il server, memorizza dati o fornisce un servizio, e un altro componente, il client, richiede e utilizza quel servizio. Il client di solito gestisce l'interfaccia utente e le azioni locali, mentre il server gestisce risorse condivise, autenticazione, archiviazione o elaborazione.
Nella sicurezza informatica, questa suddivisione è importante perché ciascun lato ha la propria superficie di attacco. Un aggressore può prendere di mira il server per rubare dati, interrompere la disponibilità o raggiungere i client connessi, oppure prendere di mira il client per acquisire credenziali, eseguire codice dannoso o spostarsi lateralmente verso il server. I difensori devono proteggere entrambe le estremità con applicazione di patch, controllo degli accessi, connessioni crittografate, registrazione e tracciamento delle versioni. Se viene aggiornato solo un lato, l'ambiente può rimanere esposto anche quando l'altro componente è stato corretto.


