02.06.2013 Views

analisi e gestione della sicurezza di una complessa applicazione ...

analisi e gestione della sicurezza di una complessa applicazione ...

analisi e gestione della sicurezza di una complessa applicazione ...

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

4.7 La <strong>sicurezza</strong> in Asp.NET: il ViewState<br />

CAPITOLO IV - La <strong>sicurezza</strong> nelle web applications<br />

Così come la Windows Form è il componente base <strong>di</strong> ogni <strong>applicazione</strong> per Windows, la Web<br />

Form è il centro <strong>di</strong> un’<strong>applicazione</strong> Asp.NET. Scendendo nei dettagli dell’implementazione,<br />

<strong>una</strong> Web Form è <strong>una</strong> pagina web in cui tutti gli elementi (testo, elenchi, pulsanti, caselle, ecc.)<br />

sono inseriti all’interno <strong>di</strong> <strong>una</strong> normale form HTML, ovvero tra i tag e .<br />

Quando la pagina viene caricata all’interno del browser, viene generato l’evento Page_Load.<br />

Nel co<strong>di</strong>ce del delegato per Page_Load è possibile verificare se l’utente sta eseguendo il primo<br />

accesso alla pagina oppure sta effettuando un PostBack. La tecnica del postback è quella che<br />

consente ad <strong>una</strong> pagina Web <strong>di</strong> trasmettere a se stessa delle informazioni <strong>di</strong> stato. In pratica in<br />

<strong>una</strong> pagina web <strong>di</strong>namica viene creata <strong>una</strong> form che ha, come campo «action» l’in<strong>di</strong>rizzo <strong>della</strong><br />

pagina stessa, ed al suo interno dei campi «hidden» che mantengono informazioni sullo stato<br />

<strong>della</strong> pagina. Queste informazioni, <strong>una</strong> volta generato un evento "Submit" (che non<br />

necessariamente scaturisce da un bottone), vengono "rispe<strong>di</strong>te in<strong>di</strong>etro" alla pagina che le usa<br />

per mo<strong>di</strong>ficare il suo aspetto.<br />

Questa tecnica è abbastanza comune per chi programma in Asp o PHP, ma Asp.NET l’ha<br />

integrata nel concetto <strong>di</strong> Web Form con il PostBack e il ViewState.<br />

Osservando il sorgente <strong>di</strong> <strong>una</strong> pagina, ad esempio quella dei Concessionari,<br />

(http://www.talete.net/Admin/Concessionari.aspx), notiamo che nella form è stato inserito<br />

anche un campo nascosto <strong>di</strong> nome __VIEWSTATE, che può apparire nel modo seguente:<br />

Il ViewState è <strong>una</strong> tabella associativa co<strong>di</strong>ficata che contiene lo stato degli oggetti presenti<br />

nella form, ad esempio il testo inserito in <strong>una</strong> casella, oppure quali CheckBox sono state<br />

selezionate. HTTP è un protocollo stateless (senza stato), ovvero non mantiene informazioni<br />

sullo stato <strong>di</strong> <strong>una</strong> pagina tra <strong>una</strong> visita e l’altra: per sopperire a tale mancanza, Asp.NET<br />

utilizza il campo ViewState. Ogni volta che si ricarica <strong>una</strong> pagina, i controlli in essa presenti<br />

88

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!