Test di Sviluppo Applicazioni Web. Nome e cognome: Matricola N :

Transcript

Test di Sviluppo Applicazioni Web. Nome e cognome: Matricola N :
Test di Sviluppo Applicazioni Web.
Nome e
cognome: _______________________________
Matricola
N : ______________________________
I cookies:
sono informazioni testuali
sono memorizzati sul client
sono associati ad un dominio
identificano univocamente un client
identificano univocamente una connessione
HTTP
hanno una data di scadenza
Il seguente stralcio di codice:
<ul style="…"><li>uno</li><li>due<br/></li></ul>
I puntini fanno riferimento ad una classe definita
altrove, in linguaggio CSS
Appare per es nel body di una pagina HTML.
E’ in HTTP
E’ HTML corretto
Descrivi la parte di DOM che viene definito, descrivendo
per ogni nodo gli attributi e il contenuto (vale 3
domande)
Dato questo url:
https://www.uninsubria.it:80/dista/home.php?st=0
Definire, in caso ne faccia parte (oppure scrivi NO se non
ne fa parte):
• Il protocollo: ____________
• Il nome del domino:_____________
• Il Top Level Domain: ___________
• La query string: ___________
• L’indirizzo IP: ____________
• I cookies: ________________
• Il path al file richiesto: _________
Per ciascuno dei punti qui sopra, apponi una croce sui
pallino corrispondente a quanto viene spedito in chiaro
(vale 3 domande, in tutto).
Un WebSocket
Una volta stabilita la connessione, permette ad
entrambi il client e il server di iniziare uno
scambio di informazioni
E’ un protocollo asincrono, cioè i messaggi
provocano l’esecuzione di una callback
all’arrivo
E’ un sostituto di tecniche di polling, che può
altrimenti essere necessario per permettere al
client di ricevere informazioni dal server
Permette al client e al server di scambiarsi
informazioni, a patto che usino lo stesso
linguaggio (per es JavaScript)
In una Web Application, viene attivato su
richiesta del client
Sfrutta il protocollo HTTP per comunicare
messaggi in entrambe le direzioni
E’ connection based, e le connessioni si
stabiliscono verso un indirizzo IP
E’ asincrono sul lato server ma non sul lato
client
Ajax
Viene spesso utilizzato per modificare il
contenuto della pagina Web con nuove
informazioni provenienti dal Server
E’ una tecnologia asincrona, cioè non bloccante
E’ un protocollo che permette di caricare pagine
o pezzi di pagina senza usare http
Permette a del codice eseguito da una pagina
Web di connettersi al server per una seconda
richiesta di dati
E’ una richiesta che viene effettuata dal Web
server verso il client, tipicamente per completare
il contenuto di una pagina Web richiesta in
precedenza
L’Header di una comunicazione HTTP contiene:
L’indirizzo IP.
Il metodo utilizzato, es. GET o POST
Se è stata richiesta un’immagine, i pixel di
questa immagine.
Il protocollo utilizzato
Il MIME type
Il codice di risposta, per es 404
I cookies memorizzati in precedenza dal client
Del codice JavaScript è incluso in una pagina HTML
acceduta da un web client con una sintassi del tipo:
<script src="…"></script>
Può essere usato per includere librerie
Viene richiesto dal client con un comando GET
separato
Viene mandato dal server nel corso della
connessione http in cui è stata mandata la
pagina”
Il client interpreta il codice che può modificare
il DOM della pagina
Il server compila il codice in questione e manda
un bytecode al client
Al posto dei puntini deve apparire una risorsa di
tipo .js residente, per motivi di sicurezza, nello
stesso Web Server
Il codice non può essere usato per modificare il
DOM, a meno che il comando non appaia nel
<body>
Non è safe, cioè non necessariamente viene
ricevuto dal server
Non è safe, cioè spedisce le informazioni in
chiaro
E’ addressable, perché viene indirizzato verso il
server preposto a ricevere le informazioni
Il seguente stralcio di codice JavaScript (vale 8
domande):
var str = "mondo";
L’Escaping di una stringa:
mantiene gli spazi
sostituisce alcuni caratteri o sequenze con altri
è una funzione che produce una stringa
è una misura necessaria per prevenire attacchi di
Code Injection
mantiene lettere e numeri e rimuove gli altri
caratteri perché potrebbero essere pericolosi
il suo funzionamento dipende dal linguaggio di
cui stiamo parlando
rende sicuro l’utilizzo di stringhe immesse
dall’utente all’interno di codice JavaScript
è un metodo sicuro di Input Sanitification
Protocollo IP: i pacchetti (datagrams) spediti:
viene spediti verso un indirizzo IP
arriva zero volte, oppure una volta
il mittente viene notificato quando, e se, la
recezione avviene
arrivano a destinazione, ma non si sa quando
sono di lunghezza fissa
il loro contenuto può essere letto da routers
intermedi
var ff = function( a , b ){
var saluta = function( x )
{
console.log("ciao");
}
if (a) b( str );
}
var scrivi = function( x ) {
console.log( x );
}
setTimeout(
function(){ ff( true, scrivi); }
, 100
);
scrivi("world");
non è corretto, perché ________________
(oppure correggere il codice)
è corretto e non produce alcuna stringa (sulla
console):
è corretto e produce la stringa (sulla console):
___________________
Un’applicazione Web con un DBMS
L’utente deve possedere le credenziali per
accedere al Database in lettura, altrimenti le sue
query verranno rifiutate dal DBMS
Il server del DBMS può essere acceduto
direttamente dal back end dell’applicazione
Le modifiche effettuate al Database sono
persistenti
Il client accede al server del database on una
connessione su una porta diversa da quella
utilizzata per connettersi al Server
Il metodo POST:
E’ addressable, per esempio può essere
memorizzato in e ripetuto con un bookmark
E’ uno dei due soli metodi del protocollo HTTP,
insieme al metodo GET
Non è addressable, per esempio non può essere
memorizzato e ripetuto con un bookmark
Non è safe, cioè non è idempotente
Protezione con hashing delle passwords sul lato server:
Si deve prevenire che l’attaccante venga a
conoscenza del “sale” usato durante l’hashing
per un dato utente.
La funzione di hashing viene invertita per
verificare la correttezza della password.
L’hashing è necessario per evitare di mandare la
password in chiaro e prevenire attacchi Man In
The Middle.
Durante il riconoscimento, il server effettua
l’hashing della password memorizzata in
precedenza per l’utente.
Lo stesso hashing viene applicato sia
all’username che alla password.
Durante il riconoscimento, il client effettua
l’hashing della password immessa dall’utente.
La funzione di hashing utilizzata deve essere
sicura.