Esplora E-book
Categorie
Esplora Audiolibri
Categorie
Esplora Riviste
Categorie
Esplora Documenti
Categorie
ISAPI
Internet Server API
ISAPI
ISAPI ee ASP
ASP meccanismo proprietario di MS per creazione di
pagine dinamiche tramite IIS:
ogni applicazione ISAPI è una DLL
… caricata in memoria alla prima richiesta
Antonio Lioy
… lasciata in memoria per soddisfare altre richieste
< lioy @ polito.it >
nello stesso spazio di memoria di IIS
(comunicazione bidirezionale tramite specifici
Politecnico di Torino oggetti condivisi tra IIS ed applicazione ISAPI)
Dip. Automatica e Informatica può essere tolta dalla memoria solo dal sistemista
l'applicazione ISAPI deve essere thread-safe
DB HD
<html> <html>
<head> <head>
<title>Saluti</title> <title>Saluti</title>
</head> </head>
<body> <body>
<%@ LANGUAGE="JavaScript" %> <h1>Ciao!</h1>
<% <h2>Ciao!</h2>
parte generata
for (var i=1; i<=5; i++) { <h3>Ciao!</h3>
dinamicamente
Response.write ("<h"+i+">Ciao!</h"+i+">"); <h4>Ciao!</h4>
} <h5>Ciao!</h5>
%> </body>
</body> </html>
</html>
Request Request
proprietà metodi
gestisce le informazioni ricevute da un client:
contenuto di un form inviato con la GET/POST
intestazione del protocollo HTTP TotalBytes Request BinaryRead
cookie (valori inviati dal browser)
ClientCertificate ServerVariables
QueryString Cookies
Form
collection
Importante: parametri dei form in ASP Parametri dei form in ASP: esempio
i campi dei form estratti lato server tramite <form action="http://a.b.com/x.asp" method="get">
Request.QueryString o Request.Form ... <input type="text" name="nome">
... non sono stringhe (come invece capita <input type="text" name="anni">
leggendoli in uno script lato client) <input type="Submit">
... ma sono "oggetti ASP" </form>
Response Response
invia informazioni al client Status AddHeader
configura i cookie mediante la collection Cookies Buffer AppendToLog
ContentType BinaryWrite
Response
Charset Clear
Expires Flush
ExpiresAbsolute Write
proprietà
End
CreateObject
Execute
ScriptTimeout Server
HTMLEncode
proprietà MapPath
metodi
JS
Unlock
Application
Contents.Remove <% Application("visitors") = 0 %>
Contents.RemoveAll
Contents
Collection metodi
Collection Contents
http://aspjavascript.com
<%@ LANGUAGE="JavaScript"%>
<%
if (Request.Form("nome")=="" || Request.Form("email")=="") { http://www.w3schools.com/asp/
Response.Redirect("form.html"); (attenzione: è in Vbscript)
}
else { http://www.comptechdoc.org/
Response.Write ("Nome: " + Request.Form("nome“)
+ "<br> E-mail: " + Request.Form("email"));
independent/web/cgi/javamanual/
p
} .as
%> e1
servizio automatico di validazione lo stesso file CSS può essere incluso da molte
pagine HTML
http://jigsaw.w3.org/css-validator/
è possibile cambiare l’aspetto di un intero sito
modificando un solo file!
possibile – ma sconsigliato – definire lo stile in-line:
per un singolo file
per singoli tag
Prof. Antonio
<span style="font-weight:bold">Lioy</span>
<head>
color: red <link rel="stylesheet" type="text/css"
text-align: right href="polito_stampa_A4.css" media="print">
. . .
</head>
arrivo from=Torino&to=Roma&day=31/03/07
data
Antonio Lioy
INVIA CANCELLA orario.asp
< lioy@polito.it >
orario.asp
Politecnico di Torino Torino Roma
<html> . . . </html>
Dip. Automatica e Informatica 6:50 8:00
7:45 8:55
un insieme di elementi di tipo on/off identificati dallo <input type="checkbox" name="orange"> Orange
stesso NAME (in questo caso NON si può usare ID) <input type="submit">
mutuamente esclusivi (selezionabili uno solo) <input type="reset">
inviato al server il valore dell’unico elemento </form>
selezionato (CHECKED)
nome_ctrl1=val_ctrl1&nome_ctrl2=val_ctrl2&…
Trasmissione parametri di un form (POST) Esempio invio dati con GET: il form
URI coincide col valore del campo “action” <form method="get" action="/cgi/insaula">
<table border="0">
(default, ovvero enctype non specificato) <tr>
Content-Type: application/x-www-form-urlencoded <td>Numero aula:</td>
<td><input type="text" size="8" name="num"></td>
Content-Length: … </tr>
<tr>
body contiene solo la stringa dei parametri nella <td>Sede:</td>
forma application/x-www-form-urlencoded <td><input type="text" size="15" name="sede"></td>
</tr>
con “enctype=multipart/form-data”
<tr>
Content-Type: multipart/form-data <td>
<input type="submit" value="Invia">
Content-Length: … <input type="reset" value="Cancella">
</td>
body = messaggio MIME (una sezione per ogni </tr>
parametro) </table>
</form>
nota: obbligatorio per controlli di tipo File
Esempio invio dati con GET: URI, HTTP, env Invio dati con POST (caso 1): il form
<form method="post" action="/cgi/insaula">
URI <table border="0">
http://localhost/cgi/insaula?num=12A&sede=Sede+Centrale <tr>
<td>Numero aula:</td>
<td><input type="text" size="8" name="num"></td>
canale HTTP (C > S) </tr>
GET /cgi/insaula?num=12A&sede=Sede+Centrale HTTP/1.1 <tr>
Accept: image/gif, image/x-xbitmap,image/jpeg,*/* <td>Sede:</td>
Referrer: http://localhost/pad/formaula.html <td><input type="text" size="15" name="txtSede"></td>
Accept-Language: it </tr>
Accept-Encoding: gzip, deflate <tr>
User-Agent: Mozilla/4.0 (compatible;MSIE 6.0;Windows NT 5.0) <td>
Host: 192.168.235.10 <input type="submit" value="Invia">
Connection: Keep-Alive <input type="reset" value="Cancella">
</td>
</tr>
QUERY_STRING </table>
num=12A&sede=Sede+Centrale </form>
Invio dati con POST (caso 1): URI, HTTP, env Invio dati con POST (caso 2): il form
<form method="post" action="/cgi/insaula“
URI
enctype="multipart/form-data">
http://localhost/cgi/insaula
<table border="0">
<tr>
canale HTTP (C > S)
<td>Numero aula:</td>
POST /cgi/insaula HTTP/1.1
<td><input type="text" size="8" name="num"></td>
Accept: image/gif, image/x-xbitmap, image/jpeg, */*
</tr>
Referrer: http://localhost/pad/formaula.html
<tr>
Accept-Language: it
<td>Sede:</td>
Accept-Encoding: gzip, deflate
<td><input type="text" size="15" name="txtSede"></td>
User-Agent: Mozilla/4.0 (compatible;MSIE 6.0;Windows NT 5.0)
</tr>
Host: 192.168.235.10
<tr>
Connection: Keep-Alive
<td>
Content-Type: application/x-www-form-urlencoded
<input type="submit" value="Invia">
Content-Length: 26
<input type="reset" value="Cancella">
</td>
num=12A&txtSede=Sede+Centrale
</tr>
</table>
QUERY_STRING </form>
Invio dati con POST (caso 2): URI, HTTP, env Attenzione ai campi vuoti !
URI ad eccezione del tag SELECT …
http://localhost/cgi/insaula
… tutti gli altri campi di un form possono non
canale HTTP (C > S) trasmettere input
POST /cgi/insaula HTTP/1.1
. . . … ed in un caso (TYPE=CHECKBOX) può anche
Content-Type: multipart/form-data; boundary=AaBbCc non essere presente la variabile relativa al campo
Content-Length: 148 (se è OFF)
--AaBbCc le applicazioni lato server devono saper trattare
Content-Disposition: form-data; name="num" tutti i casi
12A
--AaBbCc
Content-Disposition: form-data; name="txtSede"
cardno=123456789012345&cc=mastercard
Esempio 2: dati trasmessi al server Form: meglio trasmissione con GET o POST?
L’applicazione lato server deve gestire questi casi (ed GET:
altre combinazioni …) permette di fare caching della pagina di risposta
permette di creare bookmark e link alla pagina
cogn=
lascia traccia del valore dei parametri nel log del
cogn=De+Chirico server (problema di privacy e/o sicurezza)
cogn=De+Chirico&cb_pesca=on alcuni server limitano la lunghezza della query string
a 256 caratteri se è all’interno della URI
cogn=De+Chirico&cb_pesca=on&cb_sci=on POST:
non permette caching e bookmarking
non lascia traccia nel log
non pone limiti alla query string
Un po’ di storia
HTML
HTML HTML 2.0 (nov’95 = RFC-1886)
(HyperText
(HyperText Markup Language)
Markup Language) codifica lo standard de facto del 1994
HTML 3.2 (1996)
compatibile con 2.0
aggiunge table, applet, apici, pedici, testo attorno
Antonio Lioy alle immagini, …
< lioy@polito.it > HTML 4.01 (dic’ 97 – apr’ 98 – dic’ 99)
ultima (?) versione di HTML
Politecnico di Torino XHMTL 1.0 (gen’00 – ago’02)
Dip. Automatica e Informatica riscrittura di HTML 4.01 con XML
strict / transitional / frameset
Osservazioni Meta-dati
il browser non segnala gli errori: li ignora! nella parte di HEAD
spazi e ritorni a capo: dati utili per:
spazi multipli vengono trattati come uno spazio indicizzare la pagina HTML
singolo fornire informazioni al server web e/o al browser
i fine linea non hanno alcun effetto di formattazione sintassi:
molto importante il titolo (ed in generale i dati
dell’head) perché è l'elemento più usato dai sistemi <meta name="author" content="Antonio Lioy">
automatici di indicizzazione <meta name="keywords" content="html">
HTML è un linguaggio estensibile
<meta http-equiv="Content-Type"
spesso si aggiungono nuovi tag content="text/html; charset=ISO-8859-1">
il browser ignora i tag (o gli attributi) non riconosciuti
<meta http-equiv="Expires"
content="Sun, 28 Feb 2010 23:59:00 GMT">
Commenti I titoli
inseribili in qualunque punto del testo esistono sei livelli di titolo o intestazione:
possono occupare varie righe <h1> . . . </h1>
racchiusi tra <!-- e --> <h2> . . . </h2>
altri colori sono specificabili mediante il loro codice white = #FFFFFF yellow = #FFFF00
RGB in esadecimale ( # rr gg bb )
esempio: maroon = #800000 navy = #000080
<frame src="footer.html">
</frameset>
Favourite icon
la piccola icona presente vicino alla URL
un'immagine 16 x 16 pixel
vecchi browser:
solo in formato MS icon
in posizione fissa e con nome fisso = /favicon.ico
primo passo verso lo standard:
mailto:indirizzo-postale
definizione base in RFC-1738, più
1959+2255 (LDAP), 2017 (external-body), 2192
(IMAP), 2224 (NFS)
PUT, DELETE, TRACE, OPTIONS, CONNECT più server logici associati allo stesso indirizzo IP
nuovo metodo di autenticazione (basato su digest) ottenibili tramite alias nel DNS (record CNAME)
a livello di trasporto il client deve indicare il virtual host desiderato
tramite il suo FQDN (Fully Qualified Domain Name)
nuovo header: “Host: FQDN [ : port ]”
(body risultante)
<html><body>CIAO</body></html>
Test HTTP 1.0 vs. 1.1 Risultati test HTTP 1.0 vs. 1.1
test di Nielsen, Gettys et al (W3C) WAN first-time retrieval against Apache server
pagina di test:
600 559 TCP packets 7
dimensione HTML = 40 K 6,14
time (s) 6
500
contiene 43 immagini in-line (totale 130 KB)
5
400
test consistente in 44 GET (una per ciascun 4
oggetto) in vari modi: 300
4,09
221
182
309 3
HTTP/1.0 con 4 connessioni simultanee 200
2
HTTP/1.1 con 1 connessione persistente 100 2,23 2,11 1
HTTP/1.1 pipeline con 1 connessione persistente 0 0
HTTP/1.1 pipeline + compressione con 1 HTTP/1.0 HTTP/1.1 HTTP/1.1 HTTP/1.1
connessione persistente pipelined pipelined w.
compression
www.w3c.rl.ac.uk/pastevents/RALSymposium98/Talks/br0.html
HTTP/1.1 200 OK
Date: Sun, 20 May 2007 21:51:25 GMT
C Server: Apache/1.3.31 (Unix)
Content-Length: 0
Allow: GET, HEAD, OPTIONS, TRACE
Range: range1, range2, …, rangeN (weak Etag) oggetti equivalenti (stesso effetto)
start–stop (intervallo, estremi inclusi) If-Match (es. aggiornare con PUT una versione
precedente solo se non è già stata modificata)
–lastN (gli ultimi lastN byte)
If-None-Match (es. fare GET di nuova versione)
startByte– (da startByte sino alla fine)
codifiche del contenuto accettabili importante soprattutto per contattare chi ha attivato
un robot che crea problemi
Accept-Language: language [ ; q=qualityValue ] , …
problemi di privacy/spamming
lingue accettabili
Host: hostname [ : port ]
es. Accept-Language: it, en-gb;q=0.8, en;q=0.7
virtual host da contattare (porta di default: 80)
TE: [ trailers ] [ transf-enc [ ; q=qualityValue ] ] , … un identificativo opaco unico della risorsa richiesta
voglio una risposta non più vecchia di X s utile con reti sovraccariche
max-stale [ =secondi ]
accetto anche risposte scadute (da non più di X s)
min-fresh=secondi
voglio una risposta che sia ancora valida tra X s
non mettere in cache (shared/private) su disco ha priorità su max-age (solo per shared cache)
199 Miscellaneous warning numero (in base 10) di byte del body
proxy ha cambiato la codifica dei dati trasmessi utile nel caso una risorsa fornita a seguito di una
negoziazione sia anche accessibile direttamente
299 Miscellaneous persistent warning
passati in modo invisibile (metodo POST) dati uguali ma corrispondenti ad URL diverse
passati in modo visibile (metodo GET) pagine diverse ma corrispondenti ad URL uguali
2. stored
domain=books.virtualShopping.com;
secure
Javascript
linguaggio di script pensato per il web (ma ora
IlIl linguaggio
linguaggio Javascript
Javascript adottato anche in altri ambienti, es. Adobe PDF)
eseguibile lato client o lato server
introdotto in pagine HTML tramite:
il tag <script> nell'head o nel body
Commenti Variabili
stile C++: da "//" sino a fine riga identificate tramite il loro nome:
stile C: tutto il testo compreso tra "/*" e "*/" deve iniziare con un carattere alfabetico, $ o _
esempi: può poi contenere caratteri alfanumerici, $ e _
es. costo, $1, studente_12345, _2009q1
<script type="text/javascript"> non sono tipate (al contrario di Java, C, …) ma:
// commento di una sola riga in stile C++
/* prendono un tipo al momento della loro
commento che occupa quattro righe inizializzazione
in stile C possono cambiare tipo (automaticamente) per
*/ adattarsi al contesto in cui vengono usate
</script>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd"> "http://www.w3.org/TR/html4/strict.dtd">
<html> <html>
<head> <head>
<title>Pop-up di I/O: esempio 1</title> <title>Pop-up di I/O: esempio 2</title>
<script type="text/javascript"> </head>
var n = window.prompt("Nome?", "nessuno") <body>
window.alert(n); <p>Inizio dell'esempio.</p>
</script> <script type="text/javascript">
</head> var n = window.prompt("Nome?", "nessuno")
<body> window.alert("Ciao "+n);
<p>Fine dell'esempio.</p> </script>
</body> <p>Fine dell'esempio.</p>
</body>
Proprietà e metodi dell'oggetto String (II) Proprietà e metodi dell'oggetto String (III)
lastindexOf( searchString [ , start ] ) toLowerCase( )
posizione della stringa cercata (a partire da start o restituisce i caratteri convertiti in minuscolo
dalla fine) toUpperCase( )
-1 se la stringa non viene trovata restituisce i caratteri convertiti in maiuscolo
slice( begin [ , end ] )
crea una nuova stringa coi caratteri presenti da
begin a end (escluso) oppure alle fine
usare end negativo per indicare posizioni dalla fine
substring( begin [ , end ] )
estrae i caratteri da begin a end (o alla fine)
substr( begin [ , length ] )
estrae i caratteri da begin per la quantità length
Politecnico di Torino
Dip. Automatica e Informatica
UI
UI logica
logica dati
dati
double prezzo;
char buf[100];
logica applicativa nodo A dati
printf ("costo? ");
globali
gets (buf);
sscanf (buf, "%lf", &costo); dati
f1 ( )
prezzo = costo * (1 + percentuale_iva / 100); privati
M2 M4
Attenzione alla differenza tra client e server:
– come elementi hw di un sistema di elaborazione
M1
– come processi di un’architettura distribuita
M3 M5
Il server Il client
idealmente è in esecuzione ‘‘da sempre’’: attivato su richiesta di un ‘‘utente’’
attivato al boot invia richiesta verso un server
attivato esplicitamente dal sistemista attende la risposta su una porta allocata
accetta richieste da uno o più punti: dinamicamente (non può essere una porta fissa
perché ci possono essere molti “utenti” che
porta TCP o UDP (analogo al concetto di SAP OSI) operano simultaneamente, es. due finestre di un
porte fisse e solitamente predeterminate browser web)
manda risposte relative al servizio esegue un numero finito di richieste e poi termina
idealmente non termina mai:
allo shutdown
azione esplicita del sistemista
C S
peer #1 peer #2
S C
elabora elabora
attende
risposta invia
risposta
5. interpretazione HTML
Richiesta di una pagina statica Modello delle prestazioni nel web statico
http://security.polito.it/~lioy/01eny/
HTTP HTML
URI parsing + request interpretation
channel set-up transmission + display
http:// security.polito.it /~lioy/01eny/
HTTP
DNS response
UA
transmission
80 / tcp 130.192.1.8
rete user think
time
web server URI rewriting HTTP srv
response
disco creation
request
/u/lioy/public_html/01eny/index.html analysis retrieving
HTML page
t
file system
accordo per fondere JavaScript e JScript in eseguire del codice in seguito ad un evento
ECMAScript: validazione dei dati immessi in un form prima di
standard ECMA-262 inviarli al server
da tutti chiamato JavaScript (versione 1.3) si risparmia traffico inutile sulla rete e si
semplifica la logica dell’applicazione server-side
18
server-side JavaScript
27
js1.html
<script ...>
. . .
name = document.forms[0].elements[0].value
alert("Ciao " + name)
. . .
</script>
applicazione CGI
(eseguibile o script da interpretare)
Le espressioni regolari
Espressioni
Espressioni regolari
regolari in
in Javascript
Javascript definiscono un lessico = insieme di “parole” lecite
(RegExp)
(RegExp) … specificando
i caratteri
alfabetici (A,a)
numerici (1,2, ...)
Antonio Lioy
segni di interpunzione (. : , ; ...)
< lioy @ polito.it >
le sequenze ammissibili
Politecnico di Torino es. “una sequenza di uno o più caratteri A”
Dip. Automatica e Informatica … con un formalismo “compatto” (metacaratteri)
es. A+ => le sequenze A, AA, AAA, AAAA, ...
es. \[ cerca il carattere [ es. "A|B" riconosce sia il carattere A sia il carattere B
\d = numerico, ossia [0-9] es. "R.E" riconosce una stringa di tre caratteri che
inizi con R e termini con E, quali "RaE", "RAE" o
\D = non numerico, ossia [^0-9] "RiE"
\s = equivalente a "spazio" (blank CR LF FF HT VT)
\S = non equivalente a "spazio"
\w = alfanumerico o _, ossia [a-zA-Z0-9_]
\W = non alfanumerico o _, ossia [^a-zA-Z_]
i = case-insensitive (ignora la differenza tra caratteri restituisce true se all'interno della stringa compare
maiuscoli e minuscoli) l'espressione, false altrimenti
g = global (non si ferma al prima match ma prosegue
la ricerca su tutta la stringa) esempio:
m = multiline (se la stringa contiene terminatori di var s = "ciao,mamma"
linea allora ogni riga è considerata una stringa var re = /\W/
diversa ai fini dei caratteri ^ e $) n = s.search(re) // restituisce 4
esempio: re = /ciao/i x = re.test(s) // restituisce true
ODBC ODBC
ODBC ODBC
OLE DB OLE DB
consumer consumer
applicazioni che attraverso l’interfaccia OLE DB
applicazione
applicazioneootool
tool
manipola dei dati
provider
interfaccia
intermediario che mette a disposizione i dati OLE DB
espone metodi OLE DB
non tutti i provider hanno le stesse capacità, OLE
OLEDB
DB
dipende da quali metodi OLE DB implementano
ODBC
ODBC File
File Native
Native
provider
OLE DB OLE DB
applicazione
applicazioneootool
tool
Esempio di provider OLE DB
interfaccia
interfacciaOLE
OLEDB
DB Jet 4.0 è il motore di Access
provider nativo OLE DB
applicazione
applicazione
OLE.ODBC
interface
OLE DB interface OLE DB interface OLE
OLEDB
DB
ODBC Driver
Manager
applicazione
applicazioneootool
tool
ADO (ActiveX Data Object)
ADO
ADO
middleware con interfaccia ad oggetti OLE DB interface
evoluzione di DAO
mette a disposizione l’interfaccia OLE DB a
linguaggi diversi dal C++ OLE.ODBC
interface
è un wrapper di OLE DB ad un livello applicativo OLE DB inteface OLE DB interface
può essere usato con diversi linguaggi all’interno di ODBC driver
manager
programmi utente compilati (VisualBasic) text
ODBC driver file database
macro in applicazioni come MS-Office
(VisualBasic for Application - VBA)
simple provider native provider
WSH: script console (Jscript, VBscript) database
rappresenta una colonna di dati contiene tutti gli oggetti Field di un recordset
Connection Connection
Mode
modalità di apertura del DB
Provider Connection Open
read-only è il default
per avere read-write con.Mode = adModeReadWrite
ConnectionString Execute
Execute (stringSQL)
ADO
Recordset Open
Recordset: metodo open
Close
Index MoveLast
Source: comando SQL, nome di tabella, stored
MoveNext procedure
proprietà
ActiveConnection: un oggetto di tipo Connection,
MovePrevious
una stringa di connessione
Update CursorType: tipo di cursore sul RS risultante
metodi Locktype: tipo di lock sui dati
ADO Option: interpretazione di Source ADO
ADO ADO
<% <%
var rst; while (!rst.EOF) {
var sSQLString; Response.write(rst("Name") + "<BR>");
rst = Server.CreateObject("ADODB.Recordset"); rst.MoveNext( );
sSQLString = "Select * from Customers"; }
rst = con.Execute(sSQLString); %>
%>
ADO ADO
ADO
ADO ADO
ADO
Autenticazione
Sicurezza
Sicurezza dei
dei servizi
servizi basati
basati sul
sul web
web ee
di quelli di commercio elettronico
di quelli di commercio elettronico Ciao,
Ciao,sono
sonoAlice
Alice
(cenni)
(cenni)
Dimostramelo!
Dimostramelo!
Antonio Lioy
< lioy @ polito.it >
Politecnico di Torino
Dip. Automatica e Informatica
Barbara
Ciao,
Ciao,sono
sonoBarbara
Barbara
Benvenuta
BenvenutaBarbara!
Barbara!
Parlo
Parlocon
con Aumentate del 30%
la
labanca?
banca? lo stipendio
del Prof. Lioy
Certo!
Il Rettore
Certo!
Come
Comepuoi
puoidubitarne?
dubitarne?
Sgrinfia
Sgrinfia&&Arraffa
ArraffaS.r.l.
S.r.l.
Barbara
Dammi
Dammil’auto
l’autodi
diAlice!
Alice! Lo sai che Laura non è
una bionda naturale?
Che vergogna!
Sei
Seistata
stataautorizzata
autorizzatada
dalei?
lei?
Che s*?%$#”!
Barbara
Laura
Rete
Retedi
di
comunicazione
comunicazione
Pagate 10,000 EURO
ad Antonio Lioy
Rete
Retedi
di Rete
Retedi
di
comunicazione
comunicazione Pagate 1,000 EURO comunicazione
comunicazione
ad Antonio Lioy.
Pagate 1,000 EURO
ad Antonio Lioy.
Pagate 1,000 EURO
ad Antonio Lioy
3. Investigation
(forensic analysis,
daemon daemon daemon daemon daemon
internal audit, …)
VITTIMA 2. Detection
(IDS, monitor, …)
controllo
attacco
chiave unica
mittente destinatario chiave comune a mittente e destinatario
anche detta crittografia a chiave segreta
messaggio messaggio
chiave-1 (in chiaro) (in chiaro) chiave-2
K K
messaggio (cifrato)
X chiunque D E
KXpri KXpub
messaggio
E D privato per X
messaggio
pubblico
firmato da X
richiesta di autenticazione
richiesta di autenticazione server utente (UID)
server
utente (UID) UID
UID
richiesta della password delle 11:07
richiesta della password n. 48
P50UID P1107UID
P48UID UID : SUID
UID : SUID P49UID
P48UID
P47UID P1107 = p ( 11:07, SUID ) ?
P48 = p ( 48, SUID ) ? P46UID
...
RUID
UID validi smart-card
SSL/TLS
decifratura
R = RUID ? della sfida
rete pubblica
di telecomunicazioni
FIAT
FIAT ENI
ENI
Torino
Torino Roma
Roma
LAN LAN
rete a
rete a livello
di sicurezza L1 livello di
sicurezza L2
( L1 > L2 )
Architettura di pagamento via Web Pagamento con carta di credito via Web
1. offerta
ipotesi base:
l’acquirente possiede una carta di credito
2. ordine
ct l’acquirente ha un browser con SSL
ire
cardholder red merchant
4. Internet 3. ! conseguenze:
ric OK
h ie e nto
5. st m la sicurezza effettiva dipende dalla configurazione
da a ga
c. pa sia del server sia del client
ti
c
c. 8. mondo
.c
. 6. finanziario il payment gateway ha tutte le informazioni
POS da
SS ti c .c (pagamento + merce) mentre il merchant ha solo le
L virtuale .O
K? informazioni sulla merce
7.
payment OK
! payment
gateway
network