# Lato client

In informatica, nell'ambito delle reti di calcolatori, il termine lato client (client-side in inglese) indica le operazioni di elaborazione effettuate da un client in un'architettura client-server, contrapponendosi a quelle etichettate invece come lato server, rappresentando dunque il front-end di un sistema informatico e di un'applicazione web con architettura multi-tier.

## Descrizione

Un rapporto tipico di questo tipo è quello effettuato da un'applicazione, come un web browser, che avvia una connessione ad un server per poter funzionare. Le operazioni effettuate in modo client-side di solito vengono effettuate in questo modo poiché richiedono risorse che non possono essere prese sul server, ma che lo sono sul client, perché l'utente deve poter inserire dati da cui avere risposte od osservare il funzionamento dello script, oppure perché al server manca la potenza di elaborazione per poter far funzionare lo script su tutti i client.
Un'operazione tipica client-side ad esempio è quella del caricamento di un'interfaccia grafica utente, ad esempio il front-end di un'applicazione web o di un comune sito web: il browser client riceve i dati HTML e JavaScript dal server ed il motore di rendering li elabora visualizzandoli sul monitor dell'utente. Sotto quest'ottica la programmazione web lato client è una parte dell'intera programmazione web.
Inoltre se non serve che i risultati siano salvati sul server, le operazioni risulteranno nettamente più veloci lato client (ovviamente a seconda della potenza del client), diminuendo anche il cosiddetto carico informativo trasferito in rete.
Quando il protocollo utilizzato è uno dei più comuni, come l'HTTP o l'FTP, possono esistere vari programmi client (ad esempio i browser moderni supportano spesso sia HTTP che FTP). Di conseguenza spesso uno script che passa per questi protocolli è compatibile con più PC.
Programmi che girano sul computer locale, senza mai inviare o ricevere dati in rete, non sono considerati programmi client, e così le operazioni di tali programmi non vengono considerate operazioni client-side.

## Sicurezza

In un contesto di sicurezza informatica, le vulnerabilità o gli attacchi lato client si riferiscono a quelli che si verificano sul sistema informatico del client/utente, piuttosto che sul lato server, o tra i due. Ad esempio, se un server conteneva un file o un messaggio crittografato che poteva essere decrittografato solo utilizzando una chiave ospitata nel sistema informatico dell'utente, un attacco lato client sarebbe normalmente l'unica opportunità per un utente malintenzionato di accedere ai contenuti decrittografati. Ad esempio, l'aggressore potrebbe causare malware da installare sul sistema client, consentendo all'autore dell'attacco di visualizzare lo schermo dell'utente, registrare le battiture dell'utente e rubare copie delle chiavi di crittografia dell'utente, ecc. In alternativa, un utente malintenzionato potrebbe utilizzare vulnerabilità Cross-site scripting (XSS) per eseguire codice dannoso sul sistema del client senza la necessità di installare alcun malware residente in modo permanente.

## Esempi

I progetti di calcolo distribuito come SETI@home o Google Earth contano principalmente sul lato client.
I client SETI@home si connettono al server a cui richiedono alcuni dati. Il server seleziona una serie di dati (operazione server-side), e li invia al client. Il client poi analizza i dati (operazione client-side), e, quando l'analisi è completata, trasmette i suoi risultati al server.
Nel contesto del World Wide Web, i linguaggi informatici comunemente riscontrati che vengono valutati o eseguiti sul lato client includono:
* Fogli di stile CSS (Cascading Style Sheets)
* HTML
* JavaScript