Prima di affrontare lo studio sistematico della
Web Messaging API diamo uno sguardo alle metodologie alternative, che permettono la comunicazione tra codice di scripting proveniente da pagine web risiedenti su domini differenti.
Iniziamo a parlare dell’
embedding di codice JavaScript tramite il quale esso viene innestato direttamente nella pagina web che lo preleva. Questo codice risiede ovviamente in un host remoto differente e nel momento in cui viene caricato nel documento richiedente ne diventa parte integrante e ne condivide, avendone un pieno accesso, tutte le sue funzionalità. Chiaramente, quest’approccio, quantunque sia potente e flessibile, rappresenta per un utente un elevato rischio di sicurezza, soprattutto se non vi è la possibilità di verificare l’affidabilità del dominio di provenienza.
Dal punto di vista di un fornitore di tali script o librerie, invece, l’adozione di tale meccanismo potrebbe rilevarsi dispendioso economicamente perché, per garantire un servizio efficiente e scalabile, dovrebbe almeno disporre di domini differenti dai quali reperire il codice, e burocraticamente perché dovrebbe essere in grado di garantire all’utente che i servizi forniti attraverso tali script rispondano ad adeguate policy di privacy e sicurezza.
Un banale esempio di tale tecnica possiamo mostrarlo attraverso il seguente frammento di codice, caricato da una pagina web ospitata dal dominio
http://localhost:99, che attraverso l’elemento
script carica, nel suo contesto di esecuzione, del codice JavaScript presente però in un dominio differente come, ad esempio
http://user1.com:81<!DOCTYPE html>
<html lang="it">
<head>
<meta charset="utf-8" />
<title>JavaScript direct embedding</title>
<script src="http://user1.com:81/javascript/newswidgets.js"></script>
...
In tal caso dobbiamo considerare che, non essendoci nessun controllo sull’autenticità e affidabilità del dominio
user1.com, il codice del file
newswidgets.js potrebbe eseguire azioni fraudolente, quali: memorizzare i tasti premuti e i valori inseriti nelle caselle di testo; leggere il contenuto dei cookie, ecc., e poi successivamente spedire le informazioni raccolte verso dei server dove verrebbero immagazzinate per una disamina avente come scopo quello di compiere con esse operazioni illegali a danno dell’utente da cui sono state carpite.
Segue poi la metodologia definita come
JSONP (JSON with Padding) attraverso cui si indica, nell’attributo
src dell’elemento
script, un URL di un dominio differente che ritornerà una stringa formattata in JSON, la quale verrà direttamente valutata e inserita nel contesto di esecuzione della pagina web che l’ha richiesta.
- Pubblicazioni correlate:
- 10-05-2010 Guida ad HTML5: storia della sua nascita (1/3)
- 11-05-2010 Guida ad HTML5: storia della sua nascita (2/3)
- 17-05-2010 Guida ad HTML5: storia della sua nascita (3/3)
- 18-05-2010 Guida ad HTML5: supporto dei browser (1/6)
- 24-05-2010 Guida ad HTML5: supporto dei browser (2/6)
- 25-05-2010 Guida ad HTML5: supporto dei browser (3/6)
- 31-05-2010 Guida ad HTML5: supporto dei browser (4/6)
- 01-06-2010 Guida ad HTML5: supporto dei browser (5/6)
- 07-06-2010 Guida ad HTML5: supporto dei browser (6/6)
- 08-06-2010 Guida ad HTML5: l'elemento canvas, l'area del disegno
- 14-06-2010 Guida ad HTML5: l’elemento canvas, disegno di forme geometriche (1/4)
- 18-06-2010 Guida ad HTML5: l’elemento canvas, disegno di forme geometriche (2/4)
- 21-06-2010 Guida ad HTML5: l’elemento canvas, disegno di forme geometriche (3/4)
- 25-06-2010 Guida ad HTML5: l’elemento canvas, disegno di forme geometriche (4/4)
- 28-06-2010 Guida ad HTML5: l’elemento canvas, immagini e testo (1/4)
- 02-07-2010 Guida ad HTML5: l’elemento canvas, immagini e testo (2/4)
- 05-07-2010 Guida ad HTML5: l’elemento canvas, immagini e testo (3/4)
- 09-07-2010 Guida ad HTML5: l’elemento canvas, immagini e testo (4/4)
- 12-07-2010 Guida ad HTML5: l’elemento canvas, manipolazione diretta dei pixel (1/2)
- 16-07-2010 Guida ad HTML5: l’elemento canvas, manipolazione diretta dei pixel (2/2)
- 19-07-2010 Guida ad HTML5: l’elemento canvas, sfumature
- 23-07-2010 Guida ad HTML5: l’elemento canvas, ombreggiature
- 26-07-2010 Guida ad HTML5: l’elemento canvas, compositing (1/2)
- 30-07-2010 Guida ad HTML5: l’elemento canvas, compositing (2/2)
- 30-08-2010 Guida ad HTML5: l’elemento canvas, stili di linea e pattern (1/2)
- 03-09-2010 Guida ad HTML5: l’elemento canvas, stili di linea e pattern (2/2)
- 06-09-2010 Guida ad HTML5: multimedialità, concetti propedeutici (1/2)
- 10-09-2010 Guida ad HTML5: multimedialità, concetti propedeutici (2/2)
- 13-09-2010 Guida ad HTML5: multimedialità, l'elemento video
- 17-09-2010 Guida ad HTML5: multimedialità, gli elementi audio e source
- 20-09-2010 Guida ad HTML5: multimedialità, scripting dei media element (1/6)
- 24-09-2010 Guida ad HTML5: multimedialità, scripting dei media element (2/6)
- 27-09-2010 Guida ad HTML5: multimedialità, scripting dei media element (3/6)
- 01-10-2010 Guida ad HTML5: multimedialità, scripting dei media element (4/6)
- 04-10-2010 Guida ad HTML5: multimedialità, scripting dei media element (5/6)
- 08-10-2010 Guida ad HTML5: multimedialità, scripting dei media element (6/6)
- 11-10-2010 Guida ad HTML5: multimedialità, realizzazione di un player video (1/7)
- 15-10-2010 Guida ad HTML5: multimedialità, realizzazione di un player video (2/7)
- 20-10-2010 Guida ad HTML5: multimedialità, realizzazione di un player video (3/7)
- 22-10-2010 Guida ad HTML5: multimedialità, realizzazione di un player video (4/7)
- 25-10-2010 Guida ad HTML5: multimedialità, realizzazione di un player video (5/7)
- 29-10-2010 Guida ad HTML5: multimedialità, realizzazione di un player video (6/7)
- 05-11-2010 Guida ad HTML5: multimedialità, realizzazione di un player video (7/7)
- 08-11-2010 Guida ad HTML5: storage per le web application (1/3)
- 12-11-2010 Guida ad HTML5: storage per le web application (2/3)
- 15-11-2010 Guida ad HTML5: storage per le web application (3/3)
- 19-11-2010 Guida ad HTML5: eseguire codice JavaScript in background (1/3)
- 22-11-2010 Guida ad HTML5: eseguire codice JavaScript in background (2/3)
- 26-11-2010 Guida ad HTML5: eseguire codice JavaScript in background (3/3)
- 29-11-2010 Guida ad HTML5: applicazioni web offline (1/5)
- 03-12-2010 Guida ad HTML5: applicazioni web offline (2/5)
- 06-12-2010 Guida ad HTML5: applicazioni web offline (3/5)
- 10-12-2010 Guida ad HTML5: applicazioni web offline (4/5)
- 13-12-2010 Guida ad HTML5: applicazioni web offline (5/5)
- 17-12-2010 Guida ad HTML5: la geolocalizzazione (1/4)
- 20-12-2010 Guida ad HTML5: la geolocalizzazione (2/4)
- 24-12-2010 Guida ad HTML5: la geolocalizzazione (3/4)
- 27-12-2010 Guida ad HTML5: la geolocalizzazione (4/4)
- 31-12-2010 Guida ad HTML5: microdata (1/4)
- 03-01-2011 Guida ad HTML5: microdata (2/4)
- 10-01-2011 Guida ad HTML5: microdata (3/4)
- 14-01-2011 Guida ad HTML5: microdata (4/4)
- 17-01-2011 Guida ad HTML5: drag and drop (1/5)
- 21-01-2011 Guida ad HTML5: drag and drop (2/5)
- 24-01-2011 Guida ad HTML5: drag and drop (3/5)
- 28-01-2011 Guida ad HTML5: drag and drop (4/5)
- 31-01-2011 Guida ad HTML5: drag and drop (5/5)
- 04-02-2011 Guida ad HTML5: nuovi elementi semantici (1/6)
- 07-02-2011 Guida ad HTML5: nuovi elementi semantici (2/6)
- 11-02-2011 Guida ad HTML5: nuovi elementi semantici (3/6)
- 14-02-2011 Guida ad HTML5: nuovi elementi semantici (4/6)
- 18-02-2011 Guida ad HTML5: nuovi elementi semantici (5/6)
- 21-02-2011 Guida ad HTML5: nuovi elementi semantici (6/6)
- 25-02-2011 Guida ad HTML5: l’API di messaggistica (1/8)
- 04-03-2011 Guida ad HTML5: l’API di messaggistica (3/8)
- 07-03-2011 Guida ad HTML5: l’API di messaggistica (4/8)
- 11-03-2011 Guida ad HTML5: l’API di messaggistica (5/8)
- 14-03-2011 Guida ad HTML5: l’API di messaggistica (6/8)
- 18-03-2011 Guida ad HTML5: l’API di messaggistica (7/8)
- 21-03-2011 Guida ad HTML5: l’API di messaggistica (8/8)