Post

JSON

In sicurezza on aprile 18, 2010 by poyblog Messo il tag: , ,

Nel mondo del Web 2.0 esiste un formato alternativo rispetto all’ XML per scambiare dati fra client e server. Sto parlando di JSON (JavaScript Object Notation) che ad oggi è molto utilizzato nelle interazioni Ajax.

Le strutture utilizzate da JSON sono:

  • oggetti, inteso come coppie non ordinate di nome – valore, ove il nome è un a stringa ed il valore un qualsiasi oggetto javascript
  • liste ordinate di valori

Ecco un esempio di oggetto JSON:

var fileJson = {"menu": {
  "id": "file",
  "value": "File",
  "popup": {
    "menuitem": [
      {"value": "New", "onclick": "CreateNewDoc()"},
      {"value": "Open", "onclick": "OpenDoc()"},
      {"value": "Close", "onclick": "CloseDoc()"}
    ]
  }
}}

il medesimo oggetto espresso in XML:

<menu value="File">
  <popup>
    <menuitem value="New" />
    <menuitem value="Open" />
    <menuitem value="Close" />
  </popup>
</menu>

Esistono tre metodologie per ricevere dati Ajax con JSON:

  • assegnazione , in questo caso i dati ricevuta dal server creano un oggetto JSON che dopo la funzione eval può essere sfruttato localmente:

var JSONfile = “libro = {‘titilo : Il filosofo e il lupo’}”; // questo è ciò che il server ha restituito

eval(JSONfile);

alert(libro.titolo); // restituisce Il filosofo e il lupo

  • callback, in questa situazione il server chiama una funzione sul client passando come parametro un oggetto JSON:

function elabora(objJSON){

alert(objJSON.titolo); // restituisce Il filosofo e il lupo

}

var JSONfile = “elabora({‘titolo : Il filosofo e il lupo’})”;

eval(JSONfile);

  • parse, è il metodo più sicuro. Infatti parseJSON sfruttando le regular expression verifica che non venga trasmesso codice nocivo. Tutte le versioni più recenti di JavaScript gestiscono questo metodo, comunque scaricabile da http://www.json.org/json.js

Attenzione particolare dal punto di vista della sicurezza deve essere posto sulla metodologia callback infatti in questo caso è possibile aggirare il metodo di controllo detto same-origin presente sui browser. Infatti anche se un browser non permette di leggere dati provenienti da un sito terzo rispetto a quello in consultazione con la metodologia callback è possibile farlo, esponendo ‘utente finale a attacchi di tipo XSS o CSRF (vedi articolo http://poyblog.wordpress.com/2010/04/14/sicurezza-del-linguaggio-javascript-metodologie-di-attacco/ per maggiori dettagli).

Anche in questo caso W3c ha creato un meccanismo (attualmente in draft ed implementato in Firefox 3) per autorizzare o meno lato client le chiamate inter-dominio. Maggiori dettagli su http://www.w3.org/TR/2009/WD-cors-20090317/

Lascia un Commento

Fill in your details below or click an icon to log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Log Out / Modifica )

Foto Twitter

You are commenting using your Twitter account. Log Out / Modifica )

Foto di Facebook

You are commenting using your Facebook account. Log Out / Modifica )

Connecting to %s

Iscriviti

Get every new post delivered to your Inbox.