Sei sulla pagina 1di 67

Progetto di Sistemi WEB

ing. Alberto Leone a.a. 2015/2016

IL PROTOCOLLO HTTP
URI
HTTP
SSL

URI Uniform Resource Identifier

Consente di identificare risorse distribuite su internet: necessita di un


meccanismo di indirizzamento universale.
URL (Locator) e URN (Name) sono una specializzazione del concetto di
URI (Uniform Resource Identifier):

URL fa riferimento ad una risorsa fisicamente reperibile in rete


URN mira a identificare per nome in maniera persistente una risorsa,
indipendentemente dalla sua eventuale localizzazione fisica

24/09/2015
Alberto LEONE

URL
Le risorse HTTP sono identificate e localizzate da un URL (Uniform
Resource Locator) avente la seguente struttura:
<protocol>://[user:pwd@]<host>[:<port>][<path>][?<query>][#fragment]

protocol identifica il protocollo


user e pwd sono le credenziali (se richieste)
host il web server contattato
port la porta del server su cui avviene la comunicazione
path lindirizzo virtuale della pagina (o dello script) invocato sul
server specificato
query identifica i parametri eventualmente trasmessi
fragment indica un eventuale riferimento (anchor) allinterno della
pagina

24/09/2015
Alberto LEONE

URL encoding

I caratteri utilizzabili in una URL hanno alcune limitazioni:

sono utilizzabili solo i caratteri ASCII a 7 bit


non possono essere usati i caratteri di controllo (da 0 a 31 e il 127)
non possono essere usati una serie di simboli che hanno significato
speciale (es. /, :, ?, ...)

I caratteri non consentiti devono essere codificati nella stringa


% + hex(codice Ascii)

24/09/2015
4

carattere

ASCII

codifica

{spazio}

32

%20

&

38

%26

47

%2F

63

%3F

Il protocollo HTTP

Alberto LEONE

URL encoding

Codificando i caratteri speciali diventa possibile, per esempio,


trasmettere unintero URL come parametro di un altro URL evitando
qualsiasi ambiguit nellinterpretazione della stringa.

http://www.test.it/?return_url=http://www.google.com/index.php?var=valu
e&var2=ahi

http://www.test.it/?return_url=http%3a%2f%2fwww.google.com%2findex.
php%3fvar%3dvalue%26var2%3dahi
http://www.test.it/?return_url=http://www.google.com/index.php?var=valu
e&var2=ahi
http://www.test.it/?return_url=http%3a%2f%2fwww.google.com%2findex.
php%3fvar%3dvalue&var2=ahi
24/09/2015
5

Il protocollo HTTP

Alberto LEONE

Il protocollo HTTP

Caratteristiche generali

24/09/2015
6

Il protocollo HTTP

Protocollo applicativo client-server


Definisce le regole in base alle quali un
programma client (browser) ed uno
server (Web server) interagiscono
scambiandosi richieste (request) e
risposte (response)
Il web server un processo in continua
esecuzione, in ascolto su una porta
specifica.
Quando riceve una richiesta recupera o
costruisce la risorsa necessaria e la invia
in risposta al client.
La risposta, spesso, un file HTML: una
porzione di testo che rappresenta un
documento ipertestuale
Alberto LEONE

Struttura del messaggio di richiesta


{method} {path} HTTP/{version}
[{header-name-1}:{value-1}]
[{header-name-2}:[value-2}]
...
[{header-name-N}:[value-N}]
{blank line - CR-LF}
[optional body]

24/09/2015
7

Il protocollo HTTP

Alberto LEONE

Metodi client
METODO

Descrizione

GET

Richiesta di un documento collocato in uno specifico indirizzo

POST

Richiesta di una risorsa con invio di dati nel corpo del messaggio

HEAD

Richiesta della sola intestazione di una risorsa

PUT

Invio di una risorsa da salvare sul server

DELETE

Rimozione di una risorsa dal server

TRACE

Metodo diagnostico. Permette di raccogliere informazioni sui


proxy

OPTIONS

Interroga il server per sapere quali metodi sono ammessi su un


particolare path

CONNECT

Utilizzato da server intermedi per il tunneling

24/09/2015
8

Il protocollo HTTP

Alberto LEONE

Parametri utilizzati nella Request


Header

Descrizione

Accept

Specifica quale tipo di documento accettato dal client e con quali preferenze

Accept-...

Specifica preferenze su: lingua (language), set di caratteri (charset), codifica (encoding)

Authorization

Usato quando il server richiede lautenticazione

Cookie

Trasmette cookie precedentemente salvati dal server

Expect

Specifica particolari attese da parte del client (raramente implementato)

From

Specifica lindirizzo email dellutente che visita la pagina (mai attivo)

Host

Specifica il nome del server interrogato

If-Match

Richiesta condizionata

If-Modified-Since

Richiesta condizionata dalla data di ultima modifica

If-None-Match

Richiesta condizionata

If-Range

Richiesta condizionata (utile per lo scarico parziale di una risorsa)

If-Unmodified-Since

Richiesta condizionata dalla data di ultima modifica

Max-Forwards

Limita il numero di inoltri della richiesta da parte di proxy

Proxy-Authorization

Usato quando il proxy richiede lautorizzazione

Range

Specifica lintervallo di dati da scaricare

Referer

Specifica (se definita) lURL della pagina di provenienza

User-Agent

Specifica le caratteristiche del client utilizzato

24/09/2015
9

Il protocollo HTTP

Alberto LEONE

Struttura del messaggio di risposta


HTTP/{version} {status-code} {message}
[{header-name-1}:{value-1}]
[{header-name-2}:[value-2}]
...
[{header-name-N}:[value-N}]
{blank line - CR-LF}
[response body]

24/09/2015
10

Il protocollo HTTP

Alberto LEONE

Sintassi server

Il server risponde con un HEADER che precede il contenuto


(non obbligatorio)
HEADER
Codice esito richiesta
Descrizione esito
Content-type del contenuto trasmesso
Altre informazioni
CONTENUTO
Dati in formato ASCII (html, css, js, ) o binario (gif,
jpg,mpg, )
24/09/2015
11

Il protocollo HTTP

Alberto LEONE

Codici di risposta
Codice

Esito

Descrizione

1xx

Informativo

Non denota il successo o il fallimento di una


richiesta.

2xx

Esito positivo

La richiesta stata ricevuta, interpretata e


accettata.

3xx

Ridirezione

Ulteriori azioni sono necessarie per completare la


richiesta

4xx

Errore client

La richiesta contiene un errore di sintassi o non pu


essere eseguita (file inesistente o autorizzazione
necessaria).

5xx

Errore Server

Il server non ha potuto soddisfare una richiesta


apparentemente valida.

24/09/2015
12

Il protocollo HTTP

Alberto LEONE

Alcuni codici di classe 3**


Codice

Esito

Descrizione

301

Moved
Permanently

Indica che la risorsa richiesta stata riallocata su


un nuovo indirizzo in modo permanente

302

Found

Come il 301, ma lindirizzo fornito resterebbe valido


solo per questa richiesta (redirect temporanea)

304

Not modified

Indica, per richieste condizionate, che la risorsa non


stata modificata

305

Use Proxy

Indica al client che necessario utilizzare un proxy


per accedere

307

Moved Temporary Come 302, introdotta successivamente perch il 302


non era usato in modo corretto

24/09/2015
13

Il protocollo HTTP

Alberto LEONE

Alcuni codici di classe 4**


Codice

Esito

Descrizione

400

Bad Request

Richiesta HTTP non corretta

401

Unauthorized

Accesso non autorizzato. E necessario fornire


credenziali

403

Forbidden

Simile alla 401. La risposta definitiva

404

Not Found

Risorsa non esistente

405

Method Not Allowed

Il metodo utilizzato nella richiesta non ammesso


sulla risorsa specificata

406

Not Acceptable

Il server non in grado di fornire una risposta sulla


base dei vincoli imposti dal client

407

Proxy Authentication
Required

Il proxy richiede lautenticazione

408

Request Timeout

Il client non ha inviato in tempo una richiesta

414

Request-URI Too Long

LURI eccede la dimensione massima prevista

24/09/2015
14

Il protocollo HTTP

Alberto LEONE

Parametri utilizzati nelle response


Header

Descrizione

Accept-Ranges

Specifica se il server accetta richieste di intervalli (range)

Age

Indica (in secondi) let di una risorsa da quando stata generata dal server
di origine

Authentication-Info

Utilizzata nella digest authentication per trasmettere informazioni necessarie


per lautenticazione

Content-Disposition

Utilizzato nel download dei file per suggerire un nome del file da salvare

Etag

Valore univoco associato ad una specifica versione della stessa risorsa.

Location

URL (assoluto) della risorsa che stata richiesta. Usato nelle redirect.

Proxy-Authenticate

Utilizzata dai proxy per gestire lautenticazione

Refresh

Specifica un intervallo di tempo per effettuare un refresh della risorsa

Retry-After

Specifica il tempo minimo da attendere prima di ripetere la richiesta a seguito


di redirect o errori server

Server

Informazioni sul server web e sul software installato

Set-Cookie

Chiede al client di memorizzare un cookie

WWW-Authenticate

Accompagna una risposta 401. Fornisce al client le informazioni necessarie per


lautenticazione

24/09/2015
15

Il protocollo HTTP

Alberto LEONE

Altri parametri dellheader

Oltre ai parametri appena esaminati, specifici per


request (request headers) o response (response
headers) ci sono altri insiemi di parametri che
possono essere utilizzati in entrambi i messaggi

Parametri generali (general headers). Servono per


controllare la cache, la connessione, ...
Parametri riferiti al contenuto (entity headers)

24/09/2015
16

Il protocollo HTTP

Alberto LEONE

Parametri di utilizzo generale


Header

Descrizione

Cache-Control

Controlla la gestione della cache

Connection

Specifica se la connessione deve rimanere aperta per consentire nuove


richieste

Date

Indica la data di sistema del client o del server

Pragma

Controllo della cache, reso obsoleto dal Cache-Control

Trailer

Specifica un parametro (header) che verr trasmesso a valle del contenuto.


Utile se il valore di questo parametro non noto nel momento in cui lheader
viene generato

Transfer-Encoding

Utile quando il server non conosce la dimensione del contenuto mentre


trasmette la risposta. Questa viene suddivisa in blocchi e allinizio di ogni
blocco viene dichiarata la lunghezza

Upgrade

Client e server negoziano un cambio del protocollo

Via

Utilizzata dai proxy per tracciare il passaggio attraverso di loro

Warning

24/09/2015
17

Il protocollo HTTP

Alberto LEONE

Parametri riferiti al contenuto


Header

Descrizione

Allow

Indica quali metodi sono permessi. Per esempio nella risposta ad un OPTIONS

Content-Encoding

Indica se e come il contenuto stato codificato (es. compress, deflate, gzip)

Content-Language

Lingua del contenuto

Content-Length

Lunghezza del contenuto

Content-Location

Indica (nei casi in cui il server labbia alterata) la posizione della risorsa
effettivamente trasmessa

Content-MD5

Message Digest 5 del contenuto. Per verificare che non sia stato alterato

Content-Range

Specifica la porzione (range) del file trasmesso (quando la trasmissione


avviene in blocchi)

Content-Type

Media type del documento che viene trasmesso (es. text/html)

Expires

Data di scadenza della risorsa

Last-Modified

data di ultima modifica

24/09/2015
18

Il protocollo HTTP

Alberto LEONE

Esempio di richiesta

Apre una connessione sulla porta di default 80 del server


www.corriere.it
Il client invoca il comando HTTP:

GET /Primo_Piano/Scienze_e_Tecnologie/[...]/googleprint.shtml
HTTP/1.1
Host: www.corriere.it
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US;
rv:1.7.12) Accept:
text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: en,it;q=0.7,fr;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Referer: http://www.corriere.it/
Cookie: Corriere_ticker=4
24/09/2015
Cache-Control: max-age=0
19

Il protocollo HTTP

Alberto LEONE

Esempio di risposta
HTTP/1.x 200 OK
Date: Wed, 19 Oct 2005 22:51:31 GMT
Server: Apache/2.0.46
Accept-Ranges: bytes
Keep-Alive: timeout=5, max=1000
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: text/html; charset=.iso8859-1
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" >
<html>
<head>
<title>Corriere della Sera - Google Print sbarca in Europa
</title>
<meta http-equiv="Content-Type" content="text/html;
charset=iso-8859-1">
<style type="text/css" media="all">
@import "/tools/style/layoutPP.css";

24/09/2015
20

Il protocollo HTTP

Alberto LEONE

Altro esempio: 404


GET /filenonesistente.shtml HTTP/1.1
Host: www.corriere.it
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US;
rv:1.7.12) Gecko/20050915 Firefox/1.0.7
Accept:
text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/
plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: en,it;q=0.7,fr;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Cookie: Corriere_ticker=4

24/09/2015
21

Il protocollo HTTP

Alberto LEONE

Altro esempio: 404


HTTP/1.x 404 Not Found
Date: Wed, 19 Oct 2005 23:08:55 GMT
Server: Apache/2.0.46
Accept-Ranges: bytes
Keep-Alive: timeout=5, max=1000
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: text/html; charset=.iso8859-1
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
. . .
<strong>Errore</strong>:<br> la pagina che cercate non &egrave
stata trovata.<br> Se volete tornare alla homepage di
<b>Corriere.it</b> cliccate <a
href="/"><u><strong>qui</strong></u></a>

...

24/09/2015
22

Il protocollo HTTP

Alberto LEONE

Altro esempio: 304


Refresh della pagina
GET /facolta/facolta-300076.htm HTTP/1.0
Accept: */*
Accept-Language: it
Pragma: no-cache

If-Modified-Since: Thu, 23 Jan 2003 11:06:08 GMT


If-None-Match: "2c0ee-1a21-3e2fcca0"
User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)
Host: www.unife.it

HTTP/1.1 304 Not Modified


Date: Sat, 01 Mar 2003 10:15:56 GMT
Server: Apache/1.3.27 (Unix) (Red-Hat/Linux) mod_ssl/2.8.12
OpenSSL/0.9.6b DAV/1.0.2 PHP/4.1.2 mod_perl/1.26
24/09/2015
23

Il protocollo HTTP

Alberto LEONE

Sequenza
UTENTE

Visualizzazione
completata

Inizio
Visualizzazione

click
BROWSER
GET / HTTP1.0

GET /def.css

GET /img/logo.gif

GET /script.js

RETE

SERVER WEB

24/09/2015
24

Il protocollo HTTP

Alberto LEONE

firebug

24/09/2015
25

Il protocollo HTTP

Alberto LEONE

firebug

24/09/2015
26

Il protocollo HTTP

Alberto LEONE

Content-type

Il content-type indica al browser il contenuto del file trasmesso e

istruisce il client su come interpretarlo

Alcuni Content-type vengono interpretati e visualizzati direttamente dal


browser (html, jpg, gif)
Altri richiedono lutilizzo di un plug-in o di un programma esterno
(helper) per essere visualizzati (file Macromedia FLASH, filmati MPEG o
RealAudio)

Content-Type: video/quicktime
Content-Type: text/html; charset="iso-8859-6"
Content-Type: multipart/mixed; boundary=gc0p4Jq0M2Yt08j34c0p

24/09/2015
27

Il protocollo HTTP

Alberto LEONE

Media Type
Lo IANA (Internet Assigned Number Authorithy) definisce i seguenti
8 media type
media type

esempi

application

application/vnd.ms-excel

audio

audio/mpeg

image

image/png

message

message/http

model

model/vrml

multipart

multipart/form-data

text

text/html, text/plain, text/css

video

video/quicktime

24/09/2015
28

Il protocollo HTTP

Alberto LEONE

Il protocollo HTTP
Persistenza

Il client ha il compito di inizializzare la connessione TCP


La vecchia versione HTTP utilizzava una connessione TCP per lo scarico di ogni
documento
Nella versione 1.1 stata introdotta una nuova funzionalit detta persistenza: il
client pu tenere aperta la connessione finch non ha scaricato tutti i file secondari
(gif, js, css, )
Il client pu anche richiedere i documenti in pipeline (inviare le successive richieste
ancor prima di aver ottenuto le risposte.

24/09/2015
29

Il protocollo HTTP

Alberto LEONE

Virtual Host

Unaltra importante novit introdotta nella versione 1.1 di HTTP il


virtual hosting (parametro Host: nellheader HTTP)
Fondamentale per la coesistenza di pi server web (virtuali) sulla
medesima macchina

24/09/2015
30

Il protocollo HTTP

Alberto LEONE

Proxy

HTTP consente di delegare a server intermedi laccesso alla risorsa


(primitiva Via: )
Il proxy server gira la richiesta del client al server web e restituisce la
risposta al client
La risorsa potrebbe essere raggiunta attraverso pi proxy server
Il server non rileva il browser che ha originato il messaggio
24/09/2015
31

Il protocollo HTTP

Alberto LEONE

Content Negotiation

Una risorsa pu essere disponibile in diverse rappresentazioni differenti


per

Formato (Accept: )
Lingua (Accept-Language: )
Set caratteri (Accept-Charset: )
Encoding (Accept-Encoding: )

possibile delegare allutente la selezione della versione preferita del


documento, fornendo una pagina di indice
La selezione della versione preferita della risorsa pu essere delegata
ad una negoziazione condotta tra browser e server web, basata sulle
impostazioni preimpostate dallutente.
Il browser trasmette nellheader HTTP i pesi da attribuire alle diverse
possibili versioni della risorsa per consentire al server la scelta della
versione pi adatta
24/09/2015
32

Il protocollo HTTP

Alberto LEONE

Content Negotiation (esempio)


GET /Staff/AlbertoLeone/ HTTP/1.1
Host: tatooine:8087
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1;
en-US; rv:1.7.12) Gecko/20050915 Firefox/1.0.7
Accept:
text/xml,application/xml,application/xhtml+xml,text/
html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: en,it;q=0.7,fr;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Referer: http://tatooine:8087/Staff/
Cache-Control: max-age=0
24/09/2015
33

Il protocollo HTTP

Alberto LEONE

Caching

I meccanismi di caching consentono di accedere ad una


risorsa seguendo un percorso pi breve liberando banda
sia sul lato client che su quello server
Lobiettivo del caching nellHTTP 1.1 duplice:

evitare la richiesta di risorse gi disponibili. Questo viene realizzato


utilizzando meccanismi di gestione della scadenza (expiration).
Viene limitato il numero di connessioni tra client e server.
limitare la dimensione delle risposte (response). Viene limitato
limpiego di banda utilizzando un meccanismo di verifica
(validation)

24/09/2015
34

Il protocollo HTTP

Alberto LEONE

Caching

Il browser negozia con il server la trasmissione


delle risorse utilizzando alcune variabili
nellintestazione HTTP:

Expires:
Last-Modified:
If-Modified-Since:

Il browser controlla lutilizzo delle cache presenti


sullintera catena di comunicazione attraverso la
primitiva Cache-Control:

24/09/2015
35

Il protocollo HTTP

Alberto LEONE

SICUREZZA
24/09/2015
36

Il protocollo HTTP

Alberto LEONE

Sicurezza basic authentication


1.
2.
3.
4.

5.

Il client richiede una risorsa non pubblica


Il server risponde con codice 401 Unauthorized e
comunica tramite lheader WWW-Authenticate il
metodo di autorizzazione richiesto
Il browser chiede allutente la digitazione di
username e password
Il client richiede la risorsa includendo lheader
Authorization contenente username e password
separate da : e codificate base64. Username e
password viaggiano in chiaro
Il client potr usare la medesima stringa di
autorizzazione nelle chiamate successive senza
chiedere nuovamente limmissione allutente

HTTP/1.1 401 Unauthorized


WWW-Authenticate: Basic realm=www.abc.com

GET /secret/file.html
Authorization: Basic c3R1ZGVudGk6bGVvbmU=

decode64(c3R1ZGVudGk6bGVvbmU=) =
24/09/2015
37

Il protocollo HTTP

studenti:leone
Alberto LEONE

Sicurezza digest authentication

Evita la necessit di trasmettere in chiaro le credenziali


Il server oltre al dominio comunica la chiave con cui calcolare lHASH delle
credenziali (nonce number used once)
Il client comunica al server un messaggio (digest) che non contiene le
credenziali, ma costruito in funzione del loro valore e di informazioni variabili
comunicate dal server (nonce)
Il server elaborando il messaggio con la medesima funzione in grado di
verificare se il client dispone delle credenziali corrette
24/09/2015
38

Il protocollo HTTP

Alberto LEONE

Sicurezza improved digest

La digest authentication presente in HTTP 1.0 (simple digest) stata


potenziata in HTTP 1.1 (improved digest) introducendo:

Protezione da accessi replicati: un client cattura la richiesta e la ripropone al


server (fig. a sinistra)
Mutua autorizzazione: anche il server certifica la sua identit al client
Protezione per accessi frequenti: viene cambiata la modalit di calcolo per
impedire di produrre troppi dati utilizzabili per lidentificazione della chiave
Protezione dellintegrit del messaggio: impedisce che il messaggio inviato al client
sia intercettato e manipolato (fig. a destra)

24/09/2015
39

Il protocollo HTTP

Alberto LEONE

Protezione dei dati

Normalmente il body dei messaggi (request e response)


viaggia in chiaro.
HTTP non prevede meccanismi di crittografazione
Sono stati definiti protocolli che integrano HTTP con
meccanismi di crittografazione dei messaggi:

SSL - Secure Socket Layer. Introdotto da netscape tuttora il


meccanismo pi diffuso
TLS - Trasport Layer Security. Nuova versione di SSL libera da
possibili vincoli di propriet intellettuale
Secure HTTP. Sperimentale. Integra direttamente le funzionalit di
HTTP.

24/09/2015
40

Il protocollo HTTP

Alberto LEONE

Crittografia a chiave simmetrica

La stessa chiave viene usata per crittografare e


decrittografare il messaggio
La chiave deve essere nota a tutte e due le parti

24/09/2015
41

Il protocollo HTTP

Alberto LEONE

Crittografia a chiave asimmetrica

Il messaggio viene crittografato utilizzando una chiave pubblica messa


a disposizione dal ricevente
Il messaggio pu essere de-crittografato solo dal ricevente che
detiene la chiave privata

24/09/2015
42

Il protocollo HTTP

Alberto LEONE

SSL/TLS

24/09/2015
43

Il protocollo HTTP

SSL viene studiato e definito dalla


Netscape a partire dal 1995 (v.1)
fino alla prima versione definitiva del
1996 (v.3)
Nello stesso anno la IETF propone il
primo draft per TLS 1.0
(sostanzialmente analogo a SSL 3.0)
Nel 2008 viene definita la versione
attuale (v. 1.2)
SSL opera tra TCP e HTTP
Si basa su algoritmi di
crittografazione a chiave simmetrica
e asimmetrica
Normalmente la comunicazione
viene effettuata su una porta diversa
da quella standard (solitamente la
443)

Alberto LEONE

SSL/TLS
1.

2.
3.

4.
5.

Il client manda il messaggio di Client Hello al server


indicando la versione del protocollo e la serie di
parametri utilizzabili (cipher suite).
Il server invia il messaggio di Server Hello, specificando
la versione di protocollo e i parametri che verranno
utilizzati (tra quelli specificati dal client)
Il server invia al client il certificato. E responsabilit del
client verificarne la validit, che sia emesso da
unautorit riconosciuta e che il server corrisponda a
quello contattato
Il server invia un messaggio di Server Hello Done
notificando di aver concluso questa parte della
negoziazione
Il client risponde con un messaggio di Client Key
Exchange. Il messaggio contiene le chiavi simmetriche
da utilizzare per proteggere i messaggi. Le chiavi sono
crittografate con la chiave pubblica Pk contenuta nel
certificato del server.

segue ...
24/09/2015
44

Il protocollo HTTP

Alberto LEONE

SSL/TLS
7.

Il client invia un messaggio di Change Cipher Spec


indicando che i successivi messaggi saranno
crittografati con le chiavi appena trasmesse
8. Il client invia il messaggio di Finished. Il messaggio
crittografato secondo i parametri concordati e con le
chiavi condivise. Il fatto che il server interpreti
correttamente questo messaggio conferma che i
parametri sono stati correttamente condivisi
9. Il server invia il proprio Change Cipher Spec indicando
che i successivi messaggi saranno crittografati secondo
i parametri concordati
10. Il server trasmette il messaggio Finished. Il messaggio
cifrato.

24/09/2015
45

Il protocollo HTTP

Alberto LEONE

SSL e persistenza

Se il client mantiene aperta la connessione,


continua a scaricare contenuti dal server
utilizzando la connessione SSL attiva
Anche in assenza di persistenza HTTP, si pu
evitare di rinegoziare lapertura della connessione
SSL.

Il server, infatti, pu trasmettere un Session ID al client.


Il client potr inviare questo codice nell Client Hello

24/09/2015
46

Il protocollo HTTP

Alberto LEONE

SSL/TLS
1.

2.
3.

4.
5.
6.

24/09/2015
47

Il client manda il messaggio di Client Hello al server


indicando il Session ID precedentemente indicato
dal server. Il client comunque comunica la versione
del protocollo e la serie di parametri utilizzabili
(cipher suite), nel caso il server non accetti di usare
il session ID specificato
Il server invia il messaggio di Server Hello,
indicando che si appresta a ripristinare la sessione
precedente
Il server invia subito il proprio Change Cipher Spec
indicando che i successivi messaggi saranno
crittografati secondo i parametri concordati
Il server trasmette il messaggio Finished. Il
messaggio cifrato.
Il client invia un messaggio di Change Cipher Spec
indicando che i successivi messaggi saranno
crittografati
Il client trasmette il messaggio Finished. Il
messaggio cifrato.

Il protocollo HTTP

Alberto LEONE

24/09/2015
48

Il protocollo HTTP

Alberto LEONE

24/09/2015
49

Il protocollo HTTP

Alberto LEONE

Certificato Web

Normalmente rilasciato da unautorit di certificazione (es.


Verisign, Thawte, Poste Italiane)

Quando il certificato non valido:

E associato ad uno specifico server web e ne certifica la propriet


Ha una validit limitata nel tempo
Contiene la chiave pubblica del server
non rilasciato da autorit di certificazione
scaduto
non corrispondente al server web

Anche se non valido la sicurezza dei dati non


pregiudicata, tuttavia non si certi di inviare le
informazioni al destinatario presunto.
24/09/2015
50

Il protocollo HTTP

Alberto LEONE

TSL e Virtual Host

Poich TSL lavora a livello pi basso di HTTP non


possibile utilizzare pi di un certificato SSL su un
medesimo indirizzo IP.
Questo significa che il virtual hosting non , in
generale, compatibile con SSL/TSL.
Esistono alcune eccezioni a questa limitazione, ma
non sono di applicazione generale (es. certificati
con wildcard)

24/09/2015
51

Il protocollo HTTP

Alberto LEONE

SNI Server Name Indication

Estensione di TLS che prevede lo scambio


dellhostname durante la fase di negoziazione
(RFC 4366)
In questo modo il server sa con quale virtual host
il client vuole comunicare e quindi pu scegliere
quale certificato utilizzare
Tuttora una percentuale non trascurabile di
dispositivi non potrebbe utilizzare SNI (dipende da
browser/sistema operativo)

24/09/2015
52

Il protocollo HTTP

Alberto LEONE

Compatibilit con SNI

Server

Apache dalla versione 2.2.12


Microsoft IIS dalla versione 8.0

Browser

Internet Explorer 7.0 (ma da Windows Vista in avanti)


Firefox 2.0
Opera 8.0
Chrome 6.0
Safari 3.0 (Mac OS X 10.5.6)

Nota: nessuna versione di IE su Windows XP compatibile con SNI


24/09/2015
53

Il protocollo HTTP

Alberto LEONE

GESTIONE DEL CONTESTO


24/09/2015
54

Il protocollo HTTP

Alberto LEONE

HTTP: limitazioni fondamentali


Lo scopo per cui sono stati progettati HTTP e HTML era la
visualizzazione e la navigazione su ipertesti. Scopo che viene
svolto con eccellenza, ma:
1. Il protocollo HTTP stateless, ogni richiesta fatta al server
indipendente da quelle precedenti
2. Il protocollo HTTP una tecnologia PULL: le informazioni
vengono trasferite solo quando il client ne fa esplicita richiesta
3. Il protocollo non descrive lorigine di una richiesta: click
dellutente, comando javascript, iniziativa del browser a seguito di
ridimensionamento
4. Lutente interagisce solo col browser: linterazione col server
avviene solo a seguito dellinvio di una richiesta
Queste limitazioni vengono parzialmente aggirate utilizzando meccanismi
di scripting lato server e lato client
24/09/2015
55

Il protocollo HTTP

Alberto LEONE

Cookie
Obiettivo: il server deve poter collegare tra di loro due
richieste HTTP successive trasmesse dallo stesso browser

24/09/2015
56

Coppia di stringhe (etichetta, valore) trasmessa


dal server al client e ritrasmessa dal client ogni
volta che questo ricontatta il server sorgente
del cookie
La durata di un cookie fissata dal server
(anche se vincolata alle policy definite dal
client)
I cookie permanenti vengono memorizzati su
file dal browser in apposite aree personali
dellutente

Il protocollo HTTP

Alberto LEONE

Cookie - utilizzo

Permette di gestire una sessione (introduce uno stato).


Non lunico modo per farlo
Permette di personalizzare facilmente laspetto del sito
senza dover gestire una base dati sul server e un
meccanismo di identificazione/login
Permette il riconoscimento di un particolare utente quando
questi torna sul sito
Consentirebbe di rendere pi accurata la misura delle visite
sul sito (cap. Marketing)
Permette di identificare in maniera anonima un utente e
seguirne il comportamento anche tra siti diversi (problemi
di privacy)
24/09/2015
57

Il protocollo HTTP

Alberto LEONE

cookie ad Server
pagina con banner,
social plug-in (like)

Ad Server
Social Network

24/09/2015
58

Il protocollo HTTP

nuova pagina con


banner,
social plug-in (like)

Ad Server
Social Network

Alberto LEONE

non solo adserver

24/09/2015
59

Il protocollo HTTP

Alberto LEONE

Necessit di gestire il contesto

La gestione del contesto indispensabile per tenere traccia


delle azioni dellutente tra una pagina e laltra.
Rende possibile il salvataggio della sessione per riprendere
successivamente unattivit interrotta.
Da non confondere con laccesso a database sul server.
Linterazione con un database, anche in scrittura, pu
avvenire senza dover necessariamente gestire il contesto.

24/09/2015
60

Il protocollo HTTP

Alberto LEONE

Comunicazione del contesto

Utilizzo di cookie
Trasmissione mediante parametri nellURL
Trasmissione mediante campi hidden (utilizzo del
metodo POST)

24/09/2015
61

Il protocollo HTTP

Alberto LEONE

Sessione

Trasmissione di tutte le variabili di stato in tutte le


richieste e in tutte le risposte

La quantit di informazioni di contesto pu diventare


elevata e rendere lenta la trasmissione
Il server non impegna risorse

24/09/2015
62

Il protocollo HTTP

Alberto LEONE

Sessione

Definizione del contesto sul server identificato da un codice


di sessione (SID - Session Identifier)

Ogni richiesta del client richiede al server il ripristino dei parametri


di sessione (da tenere in memoria o leggere da file/database)
Per identificare il contesto necessario trasmettere soltanto lSID.
LSID pu essere trasmesso mediante parametro nellURL o
comunicato mediante cookie.
Il server deve allocare spazio di memoria per ogni sessione attiva
(utente collegato).
Occorre definire opportune politiche di gestione (timeout, logout,
) per decidere se e quando rilasciare lo spazio di memoria
allocato

24/09/2015
63

Il protocollo HTTP

Alberto LEONE

Gestione del contesto

La gestione del contesto una delle funzionalit di base


offerta da tutte le piattaforme applicative lato server (ASP,
PHP, JSP, )
Il contesto viene gestito in maniera trasparente dalla
piattaforma applicativa
Il programmatore ha la possibilit di scrivere o leggere con
grande semplicit variabili memorizzate nel contesto
Definizione della fine sessione:

Mediante comando esplicito eseguito dallutente (es. logout, exit)


Dopo un prefissato periodo di inattivit. Si noti che questo periodo
pu essere molto breve (qualche minuto, applicazioni con elevato
livello di sicurezza) o meno (qualche mese, carrello di un sito ecommerce).

24/09/2015
64

Il protocollo HTTP

Alberto LEONE

Riferimenti

Specifiche protocollo HTTP

http://www.w3.org/Protocols/rfc2616/rfc2616.html

HTTP Essentials: Protocols for Secure, Scaleable Web Sites, S. Thomas,


Wiley, 2001, ISBN: 0471398233.

Specifiche URI
Uniform Resource Identifiers (URI): Generic Syntax,
http://www.ietf.org/rfc/rfc2396.txt
Content negotiation

http://httpd.apache.org/docs/1.3/content-negotiation.html

24/09/2015
Alberto LEONE

Strumenti consigliati

Estensioni must per firefox

web developer toolbar

https://addons.mozilla.org/it/firefox/addon/web-developer/

firebug

https://addons.mozilla.org/it/firefox/addon/firebug/

Debugger HTTP (e non solo): fiddler2


http://fiddler2.com/

24/09/2015
66

Il protocollo HTTP

Alberto LEONE

Curiosit

Grafo delle RFC [http://blog.altsoph.com/rfc-graph/]

24/09/2015
67

Il protocollo HTTP

Alberto LEONE