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.