Session tracking
Session tracking
Session tracking Session tracking
HTTP: è stateless, cioè non permette di associare HTTP: è stateless, cioè non permette di associare una sequenza di richieste ad un dato utente.
una sequenza di richieste ad un dato utente.
Ciò vuol dire che, in generale, se un browser Ciò vuol dire che, in generale, se un browser richiede una specifica pagina web situata su un richiede una specifica pagina web situata su un determinato web server, quest'ultimo, dopo aver determinato web server, quest'ultimo, dopo aver soddisfatto la richiesta, chiude la connessione con soddisfatto la richiesta, chiude la connessione con il client e non conserva alcuna informazione sul il client e non conserva alcuna informazione sul client stesso. Pertanto, se lo stesso browser client stesso. Pertanto, se lo stesso browser dovesse effettuare successive richieste allo dovesse effettuare successive richieste allo stesso web server, questo non avrebbe alcun stesso web server, questo non avrebbe alcun modo per associare il browser con le richieste modo per associare il browser con le richieste
pervenute in precedenza.
pervenute in precedenza.
Session tracking Session tracking
Cos'è una sessione:
Cos'è una sessione:
Tenere traccia degli utenti durante la Tenere traccia degli utenti durante la navigazione su un determinato sito navigazione su un determinato sito rappresenta quello che, tecnicamente, rappresenta quello che, tecnicamente,
viene definito "Sessione Web".
viene definito "Sessione Web".
Session tracking Session tracking
Esempio: si pensi all’applicazione e-Esempio: si pensi all’applicazione e- commerce. E’ necessario memorizzare lo commerce. E’ necessario memorizzare lo stato per “ricordare” l’history stato per “ricordare” l’history
dell’utente !!!!
dell’utente !!!!
Tenere traccia di un utente su un sito di e-Tenere traccia di un utente su un sito di e- commerce vorrà dire, tra le altre cose, non commerce vorrà dire, tra le altre cose, non perdere le informazioni relative agli articoli perdere le informazioni relative agli articoli già scelti per l'acquisto durante la già scelti per l'acquisto durante la navigazione (e consentire all'utente stesso navigazione (e consentire all'utente stesso di poter scegliere ulteriori articoli) tra una di poter scegliere ulteriori articoli) tra una
pagina e l'altra.
pagina e l'altra.
Session tracking methods Session tracking methods
User authorization User authorization
Cookies Cookies
URL rewriting URL rewriting
Hidden fields Hidden fields
Session tracking API Session tracking API
SSL SSL
User Authorization
Autenticazione utente:
Autenticazione utente:
processo che porta a riconoscere un client processo che porta a riconoscere un client
tramite user name e una password.
tramite user name e una password.
E’ possibile dare l’accesso ad alcune risorse E’ possibile dare l’accesso ad alcune risorse solo a utenti identificati da user name e solo a utenti identificati da user name e password noti.
password noti.
User Authorization
VantaggiVantaggi
Facile da realizzareFacile da realizzare
Indipendente dalla macchina dalla quale si Indipendente dalla macchina dalla quale si connette
connette
SvantaggiSvantaggi
Registrazione obbligatoriaRegistrazione obbligatoria
Login obbligatorioLogin obbligatorio
Logout solo disconnettendosi dal browserLogout solo disconnettendosi dal browser
Cookies Cookies
Cookie:
Cookie:
è un’informazione inviata al browser è un’informazione inviata al browser da un server web. Quando il client da un server web. Quando il client riceve un cookie lo salva e poi lo riceve un cookie lo salva e poi lo rinvia al server ogni volta che accede rinvia al server ogni volta che accede
a una pagina su di esso.
a una pagina su di esso.
Cookies Cookies
Un cookie ha un nome, un valore, e Un cookie ha un nome, un valore, e alcuni attributi facoltativi come una alcuni attributi facoltativi come una descrizione, una data di scadenza, un descrizione, una data di scadenza, un
numero di versione e così via.
numero di versione e così via.
Cookies Cookies
I cookie vengono ritrasmessi verso il I cookie vengono ritrasmessi verso il
server HTTP ogni volta che:
server HTTP ogni volta che:
il cookie non è scaduto il cookie non è scaduto
il dominio che interroghiamo è il il dominio che interroghiamo è il
dominio di persistenza del cookie
dominio di persistenza del cookie
Cookies Cookies
Limitazioni: i browser accettano Limitazioni: i browser accettano
20 cookie per sito 20 cookie per sito
300 cookie per utente 300 cookie per utente
4096 byte per cookie 4096 byte per cookie
Cookies Cookies
Vantaggi Vantaggi
Anonimo e trasparenteAnonimo e trasparente
Svantaggi Svantaggi
Fortemente legato alla macchina, i Fortemente legato alla macchina, i cookie sono memorizzati su disco !!!
cookie sono memorizzati su disco !!!
Il browser può non supportare i cookieIl browser può non supportare i cookie
URL Rewriting
I dati che identificano la sessione vengono I dati che identificano la sessione vengono
appesi alla fine dell'URL.
appesi alla fine dell'URL.
URL originale:
URL originale:
http://server:port/servlet/servletName http://server:port/servlet/servletName
URL riscritto:
URL riscritto:
http://server:port/servlet/servletName?sessionid=7456 http://server:port/servlet/servletName?sessionid=7456
URL Rewriting
VantaggiVantaggi
Funziona anche se i cookies vengono Funziona anche se i cookies vengono disabilitati
disabilitati
Tutti i dati sono appesi all'url =>facile fare Tutti i dati sono appesi all'url =>facile fare il debug.
il debug.
SvantaggiSvantaggi
La lunghezza dell'url è limitata a 2000 La lunghezza dell'url è limitata a 2000 caratteri
caratteri
Assenza di riservatezza dei datiAssenza di riservatezza dei dati
La sessione viene persa se si naviga verso La sessione viene persa se si naviga verso sezioni statiche dello stesso sito
sezioni statiche dello stesso sito
Hidden Fields
I form HTML hanno un tag di questo tipo:
I form HTML hanno un tag di questo tipo:
<INPUT TYPE>=”HIDDEN” NAME=”SESSION” VALUE=”...”
<INPUT TYPE>=”HIDDEN” NAME=”SESSION” VALUE=”...”
Quando il form viene sottomesso il nome ed Quando il form viene sottomesso il nome ed il valore specificati sono inclusi nei dati del il valore specificati sono inclusi nei dati del methodo GET o POST
methodo GET o POST
Questi campi non sono visibili direttamente Questi campi non sono visibili direttamente dall'utente
dall'utente
<<html>html>
<head>
<head>
<title>My Page</title>
<title>My Page</title>
</head>
</head>
<body>
<body>
<form name="myform"
<form name="myform"
action="http://www.mydomain.com/myformhandler.cgi"
action="http://www.mydomain.com/myformhandler.cgi"
method="POST">
method="POST">
<div align="center">
<div align="center">
<input type="text" size="25" value="Enter your name here!">
<input type="text" size="25" value="Enter your name here!">
<input type="hidden" name="Language" value="English">
<input type="hidden" name="Language" value="English">
<br><br>
<br><br>
</div>
</div>
</form>
</form>
</body>
</body>
</html
</html
Hidden Fields
VantaggiVantaggi
Funziona anche se i cookies vengono Funziona anche se i cookies vengono disabilitati
disabilitati
E' possibile utilizzare il metodo HTTP POST, E' possibile utilizzare il metodo HTTP POST, bypassando, così, il problema dello spazio bypassando, così, il problema dello spazio
limitato a 2000 caratteri.
limitato a 2000 caratteri.
SvantaggiSvantaggi
Funziona solo se ogni pagina e generata Funziona solo se ogni pagina e generata dinamicamente
dinamicamente
Session tracking Api Session tracking Api
Che cos'è una Servlet?
Che cos'è una Servlet?
Semplicemente, un programma scritto in Semplicemente, un programma scritto in Java e residente su un server, in grado di Java e residente su un server, in grado di gestire le richieste generate da uno o più gestire le richieste generate da uno o più client, attraverso uno scambio di messaggi client, attraverso uno scambio di messaggi tra il server ed i client stessi che hanno tra il server ed i client stessi che hanno effettuato la richiesta. Tipicamente sono effettuato la richiesta. Tipicamente sono collocate all'interno di Application Server o collocate all'interno di Application Server o Web Application Server come, ad esempio, Web Application Server come, ad esempio, Tomcat.
Tomcat.
Session tracking Api Session tracking Api
Visto che le Servlet sono scritte in Java esse Visto che le Servlet sono scritte in Java esse possono avvalersi interamente delle Java API possono avvalersi interamente delle Java API che, come è noto, consentono di implementare che, come è noto, consentono di implementare con relativa semplicità anche svariate con relativa semplicità anche svariate funzionalità complesse e importanti come, ad funzionalità complesse e importanti come, ad esempio, l'accesso ad un database.
esempio, l'accesso ad un database.
Ad esse si aggiungono, poi, le più specifiche Ad esse si aggiungono, poi, le più specifiche servlet API, che mettono a disposizione servlet API, che mettono a disposizione un'interfaccia standard utilizzata per gestire la un'interfaccia standard utilizzata per gestire la comunicazione tra un client Web ed una comunicazione tra un client Web ed una Servlet.
Servlet.
Session tracking Api Session tracking Api
Il flusso di una Servlet:
Il flusso di una Servlet:
Un client invia una richiesta (request) per una Un client invia una richiesta (request) per una servlet ad un web application server.
servlet ad un web application server.
Qualora si tratti della prima richiesta, il server Qualora si tratti della prima richiesta, il server istanzia e carica la servlet in questione avviando istanzia e carica la servlet in questione avviando un thread che gestisca la comunicazione con la un thread che gestisca la comunicazione con la servlet stessa.
servlet stessa.
Session tracking Api Session tracking Api
Nel caso, invece, in cui la Servlet sia già stata caricata Nel caso, invece, in cui la Servlet sia già stata caricata in precedenza (il che, normalmente, presuppone che un in precedenza (il che, normalmente, presuppone che un altro client abbia effettuato una richiesta antecedente altro client abbia effettuato una richiesta antecedente quella attuale) allora verrà, più semplicemente, creato quella attuale) allora verrà, più semplicemente, creato un ulteriore thread che sarà associato al nuovo client, un ulteriore thread che sarà associato al nuovo client, senza la necessità di ricaricare ancora la Servlet.
senza la necessità di ricaricare ancora la Servlet.
Il server invia alla servlet la richiesta pervenutagli dal Il server invia alla servlet la richiesta pervenutagli dal client.
client.
La servlet costruisce ed imposta la risposta (response) La servlet costruisce ed imposta la risposta (response) e la inoltra al server.
e la inoltra al server.
Il server invia la risposta al client. Il server invia la risposta al client.
Session tracking Api
Session tracking Api
Session tracking Api Session tracking Api
Abbiamo visto, esaminando il flusso di esecuzione di Abbiamo visto, esaminando il flusso di esecuzione di una servlet, che il flusso stesso è incentrato su due una servlet, che il flusso stesso è incentrato su due componenti fondamentali:
componenti fondamentali:
la richiesta (request, inviata dal client verso il la richiesta (request, inviata dal client verso il server)
server)
la risposta (response, inviata dal server verso il la risposta (response, inviata dal server verso il client).
client).
In Java, questi due componenti sono identificati, In Java, questi due componenti sono identificati,
rispettivamente, dalle seguenti interfacce:
rispettivamente, dalle seguenti interfacce:
● javax.servlet.http.HttpServletRequestjavax.servlet.http.HttpServletRequest
● javax.servlet.http.HttpServletResponsejavax.servlet.http.HttpServletResponse
Session tracking Api Session tracking Api
Un oggetto di tipo HttpServletRequest Un oggetto di tipo HttpServletRequest consente ad una Servlet di ricavare svariate consente ad una Servlet di ricavare svariate informazioni sul sistema e sull'ambiente informazioni sul sistema e sull'ambiente relativo al client.
relativo al client.
L'oggetto di tipo HttpServletResponse, L'oggetto di tipo HttpServletResponse, invece, costituisce la risposta da inviare al invece, costituisce la risposta da inviare al client e che, come si è detto, può essere client e che, come si è detto, può essere dipendente da svariati data source.
dipendente da svariati data source.
Session tracking Api Session tracking Api
Creare una Servlet vuol dire, in termini pratici:
Creare una Servlet vuol dire, in termini pratici:
Definire una classe che derivi dalla classe Definire una classe che derivi dalla classe HttpServlet. I metodi più comuni per molti dei quali HttpServlet. I metodi più comuni per molti dei quali si è soliti eseguire l'overriding nella classe derivata si è soliti eseguire l'overriding nella classe derivata sono i seguenti:
sono i seguenti:
void doGet(HttpServletRequest req, void doGet(HttpServletRequest req, HttpServletResponse resp)
HttpServletResponse resp)
Gestisce le richieste HTTP di tipo GET. Viene Gestisce le richieste HTTP di tipo GET. Viene invocato da service()
invocato da service()
void doPost(HttpServletRequest req, void doPost(HttpServletRequest req, HttpServletResponse resp)
HttpServletResponse resp)
Gestisce le richieste HTTP di tipo POST. Viene Gestisce le richieste HTTP di tipo POST. Viene invocato da service()
invocato da service()
Session tracking Api Session tracking Api
Qualcuno potrebbe domandarsi per quale motivo Qualcuno potrebbe domandarsi per quale motivo possa essere più vantaggioso utilizzare le possa essere più vantaggioso utilizzare le Servlet piuttosto che affidarsi a tecnologie, Servlet piuttosto che affidarsi a tecnologie, ancora abbastanza utilizzate, come la Common ancora abbastanza utilizzate, come la Common Gateway Interface (CGI). Beh, le differenze non Gateway Interface (CGI). Beh, le differenze non sono trascurabili. Tra le più evidenti possiamo sono trascurabili. Tra le più evidenti possiamo citare:
citare:
Portabilità
Portabilità: Grazie alla tecnologia Java, le : Grazie alla tecnologia Java, le servlet possono essere facilmente servlet possono essere facilmente programmate e "portate" da una piattaforma programmate e "portate" da una piattaforma
ad un'altra senza particolari problemi.
ad un'altra senza particolari problemi.
Session tracking Api Session tracking Api
Efficienza
Efficienza. . Come abbiamo detto le servlet Come abbiamo detto le servlet vengono istanziate e caricate una volta soltanto, vengono istanziate e caricate una volta soltanto, alla prima invocazione. Tutte le successive alla prima invocazione. Tutte le successive chiamate da parte di nuovi client vengono gestite chiamate da parte di nuovi client vengono gestite creando dei nuovi thread che si prendono carico creando dei nuovi thread che si prendono carico del processo di comunicazione (un thread per ogni del processo di comunicazione (un thread per ogni client) fino al termine delle rispettive sessioni. Con client) fino al termine delle rispettive sessioni. Con le CGI, tutto questo non accadeva. Ogni client che le CGI, tutto questo non accadeva. Ogni client che effettuava una richiesta al server causava il effettuava una richiesta al server causava il caricamento completo del processo CGI con un caricamento completo del processo CGI con un degrado delle performance facilmente degrado delle performance facilmente
immaginabile.
immaginabile.
Session tracking Api Session tracking Api
Persistenza
Persistenza: Dopo il caricamento, una servlet : Dopo il caricamento, una servlet rimane in memoria mantenendo intatte rimane in memoria mantenendo intatte determinate informazioni (come la determinate informazioni (come la connessione ad un data base) anche alle connessione ad un data base) anche alle
successive richieste.
successive richieste.
Gestione delle sessioni
Gestione delle sessioni: Come è noto il : Come è noto il protocollo HTTP è un protocollo stateless protocollo HTTP è un protocollo stateless (senza stati) e, pertanto non in grado di (senza stati) e, pertanto non in grado di ricordare i dettagli delle precedenti richieste ricordare i dettagli delle precedenti richieste provenienti da uno stesso client. Le servlet provenienti da uno stesso client. Le servlet
sono in grado di superare questa limitazione.
sono in grado di superare questa limitazione.
Session tracking Api Session tracking Api
Il browser richiede una pagina JSP o una Il browser richiede una pagina JSP o una Servlet inoltrando la richiesta ad un web Servlet inoltrando la richiesta ad un web server.
server.
Quest'ultimo non fa altro che passare la Quest'ultimo non fa altro che passare la richiesta stessa al servlet engine, il quale richiesta stessa al servlet engine, il quale controlla se la request pervenuta includa o controlla se la request pervenuta includa o meno un ID per la sessione. Se così non è, il meno un ID per la sessione. Se così non è, il Servlet Engine crea un identificativo univoco, Servlet Engine crea un identificativo univoco, istanziando anche un "session object" ad esso istanziando anche un "session object" ad esso correlato che possa essere utilizzato per correlato che possa essere utilizzato per salvare i dati utili alla sessione.
salvare i dati utili alla sessione.
Session tracking Api Session tracking Api
Da questo momento in poi il server utilizzerà Da questo momento in poi il server utilizzerà l'ID di sessione (session ID) per mettere in l'ID di sessione (session ID) per mettere in relazione ogni richiesta del browser con relazione ogni richiesta del browser con l'opportuno oggetto di sessione l'opportuno oggetto di sessione precedentemente creato.
precedentemente creato.
Si noti che tutto questo avviene senza Si noti che tutto questo avviene senza minimamente intaccare la logica stateless del minimamente intaccare la logica stateless del protocollo HTTP, il quale continuerà a protocollo HTTP, il quale continuerà a considerare chiusa la connessione con il client considerare chiusa la connessione con il client dopo aver soddisfatto ogni richiesta pervenuta.
dopo aver soddisfatto ogni richiesta pervenuta.
Session tracking Api Session tracking Api
Per default viene utilizzato un cookie per il Per default viene utilizzato un cookie per il salvataggio del session ID sul browser del client. In salvataggio del session ID sul browser del client. In tal modo ad ogni successiva richiesta del browser tal modo ad ogni successiva richiesta del browser verrà accodato alla request, l'ID prelevato dal verrà accodato alla request, l'ID prelevato dal cookie.
cookie.
Le Le servlet servlet API API definiscono definiscono la la classe classe javax.servlet.http.Cookie
javax.servlet.http.Cookie per la gestione dei per la gestione dei cookie
cookie
Una servlet recupera Una servlet recupera tuttitutti i cookie che ha inviato i cookie che ha inviato attraverso il metodo
attraverso il metodo public Cookie[]
public Cookie[]
HttpServletRequest.getCookies() HttpServletRequest.getCookies()
Session tracking Session tracking
Per default i cookie sono restituiti Per default i cookie sono restituiti solo all’host che li ha salvati
solo all’host che li ha salvati
È possibile impostare la scadenza per È possibile impostare la scadenza per un cookie utilizzando il metodo
un cookie utilizzando il metodo
public void Cookie.setMaxAge(int public void Cookie.setMaxAge(int
expiry) expiry)
Session tracking Session tracking
Vantaggi Vantaggi
Anonimo e trasparenteAnonimo e trasparente
Svantaggi Svantaggi
Fortemente legato alla macchina, i Fortemente legato alla macchina, i cookie sono memorizzati su disco !!!
cookie sono memorizzati su disco !!!
Il browser può non supportare i cookieIl browser può non supportare i cookie
Session tracking Api Session tracking Api
La soluzione alternativa più efficace è nota La soluzione alternativa più efficace è nota come URL encoding e fornisce un modo per come URL encoding e fornisce un modo per riscrivere le URL in modo che esse contengano riscrivere le URL in modo che esse contengano al loro interno anche il session ID. Grazie al loro interno anche il session ID. Grazie all'URL encoding è possibile tenere traccia all'URL encoding è possibile tenere traccia delle sessioni anche nei casi in cui un utente delle sessioni anche nei casi in cui un utente abbia deciso di disabilitare i cookie sul proprio abbia deciso di disabilitare i cookie sul proprio browser.
browser.
Session tracking Api Session tracking Api
È facile, in Java, ottenere un È facile, in Java, ottenere un riferimento ad un session object.
riferimento ad un session object.
Nelle Servlet sarà sufficiente utilizzare Nelle Servlet sarà sufficiente utilizzare il metodo getSession() dell'oggetto il metodo getSession() dell'oggetto request per ottenere un riferimento request per ottenere un riferimento
ad un oggetto di tipo HttpSession:
ad un oggetto di tipo HttpSession:
HttpSession session = request.getSession();
HttpSession session = request.getSession();
Session tracking Session tracking
Attraverso il metodo getSession() verrà restituito Attraverso il metodo getSession() verrà restituito l'oggetto di tipo HttpSession relativo alla sessione l'oggetto di tipo HttpSession relativo alla sessione
corrente, qualora ne esista già una. Nel caso in corrente, qualora ne esista già una. Nel caso in
cui non fosse presente alcuna sessione, tale cui non fosse presente alcuna sessione, tale
metodo si occuperà di crearne una nuova.
metodo si occuperà di crearne una nuova.
public void doPost(HttpServletRequest public void doPost(HttpServletRequest
req,HttpServletResponse res) req,HttpServletResponse res) {{
……..
HttpSession session HttpSession session = = req.getSession(true);
req.getSession(true);
}}
Session tracking Session tracking
I tre metodi classici utilizzati per lavorare I tre metodi classici utilizzati per lavorare con eventuali attributi del session object con eventuali attributi del session object
sono i seguenti:
sono i seguenti:
public voi setAttribute(String name, Object public voi setAttribute(String name, Object
value) value)
public Object getAttribute(String name) public Object getAttribute(String name)
public void removeAttribute(String name) public void removeAttribute(String name)
Session tracking Session tracking
public voi setAttribute(String name, public voi setAttribute(String name,
Object value) Object value)
consente di impostare un oggetto Java consente di impostare un oggetto Java
come attributo di una sessione, come attributo di una sessione,
assegnandogli un nome. Ad esempio:
assegnandogli un nome. Ad esempio:
session.setAttribute("codiceArticolo", session.setAttribute("codiceArticolo",
itemCode);
itemCode);
Session tracking Session tracking
public Object getAttribute(String name) public Object getAttribute(String name)
permette di ricavare il valore di un attributo permette di ricavare il valore di un attributo fornendo in input il nome dell'attributo fornendo in input il nome dell'attributo stesso. Poiché il tipo restituito è di classe stesso. Poiché il tipo restituito è di classe Object sarà necessario effettuare un Object sarà necessario effettuare un casting per convertire il risultato al tipo casting per convertire il risultato al tipo desiderato
desiderato
String itemCode = (String) String itemCode = (String)
session.getAttribute("codiceArticolo")
session.getAttribute("codiceArticolo")
Session tracking Session tracking
public void removeAttribute(String name) public void removeAttribute(String name)
removeAttribute() elimina un attributo dal removeAttribute() elimina un attributo dal session object, fornendo in input al metodo session object, fornendo in input al metodo stesso il nome dell'attributo da rimuovere.
stesso il nome dell'attributo da rimuovere.
Ad esempio:
Ad esempio:
session.removeAttribute("codiceArticolo")
session.removeAttribute("codiceArticolo")
Session tracking Session tracking
Il metodo di URL Encoding:
Il metodo di URL Encoding:
spesso tale metodo è anche denominato spesso tale metodo è anche denominato come "URL Rewriting", in quanto consente, come "URL Rewriting", in quanto consente, attraverso l'invocazione di un particolare attraverso l'invocazione di un particolare metodo, la riscrittura della URL di metodo, la riscrittura della URL di destinazione.
destinazione.
L'URL Rewriting, al contrario dell'URL L'URL Rewriting, al contrario dell'URL Encoding visto in precedenza, non utilizza Encoding visto in precedenza, non utilizza le API messe a disposizione da Java per le API messe a disposizione da Java per gestire la propria funzionalità.
gestire la propria funzionalità.
Session tracking Session tracking
Lo scopo dell'URL Encoding è quello di Lo scopo dell'URL Encoding è quello di aggiungere il session ID ad ogni URL aggiungere il session ID ad ogni URL facente capo ad un determinato sito, ogni facente capo ad un determinato sito, ogni qualvolta questa venga richiesta attraverso qualvolta questa venga richiesta attraverso il browser. Per far ciò viene utilizzato il il browser. Per far ciò viene utilizzato il metodo encodeURL() dell'oggetto implicito metodo encodeURL() dell'oggetto implicito response, così definito:
response, così definito:
public String encodeURL (String url)
public String encodeURL (String url)
Session tracking Session tracking
Per impostare la action di una pagina JSP in Per impostare la action di una pagina JSP in modo che invochi una determinata servlet, modo che invochi una determinata servlet, ad esempio, si dovrà utilizzare la seguente ad esempio, si dovrà utilizzare la seguente sintassi:
sintassi:
<%
<%
String url = String url =
response.encodeURL("../servlet/MyServlet");
response.encodeURL("../servlet/MyServlet");
%>
%>
<form action="<%=url%>" method="post">
<form action="<%=url%>" method="post">
Session tracking Api Session tracking Api
È importante ricordarsi di utilizzare il È importante ricordarsi di utilizzare il metodo urlEncode() su tutte le URL metodo urlEncode() su tutte le URL utilizzate all'interno dell'applicazione web utilizzate all'interno dell'applicazione web che vengano invocate direttamente da una che vengano invocate direttamente da una richiesta del browser.
richiesta del browser.
Se ci si scordasse di inserirne qualcuna lo Se ci si scordasse di inserirne qualcuna lo scotto da pagare sarebbe quello di perdere scotto da pagare sarebbe quello di perdere traccia della sessione, con tutti i rischi che traccia della sessione, con tutti i rischi che ne conseguirebbero.
ne conseguirebbero.
SSL SSL
SSL: Secure Sockets Layer. SSL: Secure Sockets Layer.
Si interpone tra l’HTTP e il TCP/IP Si interpone tra l’HTTP e il TCP/IP
Si occupa della sicurezza con il Si occupa della sicurezza con il ricorso della crittografia a chiave ricorso della crittografia a chiave pubblica per lo scambio di chiavi pubblica per lo scambio di chiavi simmetriche che cifrano la simmetriche che cifrano la
comunicazione client-server.
comunicazione client-server.
La tecnologia SSL è stata sviluppata La tecnologia SSL è stata sviluppata da Netscape
da Netscape
SSL SSL
Funzionamento:
Funzionamento:
L’utente si connette al sito sicuro SSL. I siti L’utente si connette al sito sicuro SSL. I siti protetti con SSL hanno URL del tipo
protetti con SSL hanno URL del tipo https://.... (HTTP più SSL)
https://.... (HTTP più SSL)
Il server firma la sua chiave pubblica con Il server firma la sua chiave pubblica con la sua chiave privata
la sua chiave privata
Il browser usa la chiave pubblica del Il browser usa la chiave pubblica del server per verificare che la persona che ha server per verificare che la persona che ha firmato la chiave sia effettivamente il suo firmato la chiave sia effettivamente il suo
proprietario proprietario
SSL SSL
Il browser verifica se un’autorità di Il browser verifica se un’autorità di certificazione fidata ha firmato la certificazione fidata ha firmato la
chiave.
chiave.
Se non c’è questo tipo di firma il Se non c’è questo tipo di firma il browser chiede all’utente di browser chiede all’utente di
accettare o meno la firma.
accettare o meno la firma.