Proteggere il ViewState di ASP.NET criptandolo

di Daniele Bochicchio, in ASP.NET 2.0, Security, ViewState,

Il ViewState inviato attraverso il browser è consigliabile che non venga mai utilizzato come contenitore di informazioni sensibili, a meno che non venga criptato.

Uno dei modi per evitare problemi legati al ViewState è necessario utilizzare HMAC (Hashed message authentication codes), che è abilitato di default e consente di evitare il cosiddetto tampering del ViewState.

Le modalià attraverso le quali viene regolato il comportamento del ViewState sono contenute nell'attributo ViewStateEncryptionMode della direttiva @Page o del web.config.

<%@Page ViewStateEncryptionMode="Always" %>
<configuration>
  <system.web>
     <pages viewStateEncryptionMode="Always" />
   </system.web>
</configuration>

Di default il valore è impostato su Auto, che fa sì che il ViewState della pagina sia criptato solo se viene richiamato in maniera specifica da uno dei controlli presenti sulla stessa il metodo RegisterRequiresViewStateEncryption della classe Page. Impostandolo su Always si ha l'effetto, nelle pagine in cui si vuole raggiungere una sicurezza maggiore, che questo venga sempre fatto.

Infine, bisogna impostare come algoritmo di decriptazione, all'interno del web.config, la chiave decryption sui valori AES o 3DES, con il primo come valore suggerito in quanto utilizza un algoritmo considerato più sicuro. Se questo non viene fatto, ASP.NET non effetta l'encrypt del ViewState, che è tra l'altro il comportamento di default, essendo il valore predefinito "Auto".

<configuration>
  <system.web>
    <machineKey ... decryptionKey="AutoGenerate,IsolateApps" decryption="AES" />
  </system.web>
</configuration>

Se queste modifiche riguardano un'applicazione che è in cluster, ovviamente la chiave di decriptazione va fissata in maniera tale che sia uguale su tutti i nodi e non autogenerata ed isolata.

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

I più letti di oggi