Per offrire un servizio Web su Internet o in una intranet si può usare un programma di gestione server Web.
I principali server Web sono Apache (gratuito, di pubblico dominio) in ambiente Linux (ma anche Windows) e Internet Information Server (IIS) su Windows.
Un server Web è un programma che svolge almeno le seguenti funzioni:
-
accetta una connessione TCP dal browser,
-
riceve il nome del file da cercare e restituire,
-
preleva il file dal disco,
-
restituisce il file al client,
-
rilascia la connessione.
Per non eseguire un accesso al disco per ogni file, può mantenere in una cache i file utilizzati più di recente.
Per migliorare le prestazioni il server Web di solito è un programma multithreading: un modulo front-end accetta le richieste e avvia i thread di elaborazione che servono ciascuna richiesta; per avere reali miglioramenti di solito sono presenti più dischi.
Un ulteriore miglioramento consiste nell’avere più computer per eseguire le elaborazioni (modello server farm); un modulo front-end accetta le richieste e divide il carico sui vari computer. Il problema di questo modello è la mancanza di una cache condivisa (dato che ogni computer ha la sua memoria); il front-end deve tenere traccia dei computer a cui è stata inviata una richiesta e inviare sempre allo stesso nodo le richiese di una stessa pagina.
Dal tipo di server dipendono prestazioni, affidabilità e sicurezza.
Per esempio può variare il numero di browser che possono accedere contemporaneamente al sito e la velocità di risposta.
La funzione di gestione dei server virtuali permette di gestire più siti Web su un unico server.
La configurazione di un server Web richiede tra l’altro di indicare in quale directory memorizzare le pagine Web e che tipo di accesso è possibile usare (per esempio in lettura, o in esecuzione per gli script), quali sono i file di default nel caso l’utente non specifichi nell’URL un file ma soltanto una directory, e se visualizzare un elenco dei file della directory se non è presente un file di default.
L’accesso alle pagine Web può essere anonimo oppure in base ad autenticazione (in tal caso l’accesso iniziale del browser provoca l’apparizione di una finestra di dialogo con la richiesta di account e password).
Autenticazione
Il metodo più semplice di autenticazione è l’autenticazione Basic; se il browser effettua una richiesta anonima il server nega l’autorizzazione e richiede che venga effettuata l’autenticazione; il browser richiede nome e password all’utente e in ogni richiesta successiva invia i dati (nome e password) al server in chiaro (soltanto codificati in base64). È un metodo previsto nelle specifiche del protocollo HTTP e supportato da tutti i browser ma rende molto facile l’intercettazione di dati.
Un’alternativa migliore, introdotta più recentemente nelle specifiche HTTP, è l’autenticazione di tipo Digest. Con questo metodo la password non viene mai trasmessa sulla rete; l’utente non deve inviare la password ma solo dimostrare di conoscerla; il server invia al browser una stringa (challenge) che deve essere codificata in base alla password dell’utente e restituita; il server ripete gli stessi calcoli e verifica il risultato.
In ogni caso questi metodi controllano solo chi si connette al server, ma poi le informazioni sono trasmesse in chiaro e un intruso può intercettarle leggendo il contenuto dei segmenti TCP.
Per crittografare le informazioni trasmesse bisogna usare un protocollo come SSL. Si può usare l’autenticazione base insieme a SSL per trasmettere la password in modo sicuro.