Lunedi, 13 ottobre 2008 - 13.39.17 A A A Homepage | Forum | Feed RSS


salta il menu principale





Ricerca articoli




Criptare i dati inviati ai moduli con Asp Net
Articoli di approfondimento sul nuovo linguaggio di programmazione di Microsoft
 
a cura di Guido Arata

Criptazione delle query string con ASP.NET

Una query string è solitamente un URL contenente dei parametri con relativi valori che il browser invia ad un'applicazione web (solitamente lato server). L'uso di tale tecnica per passare dati dal browser al server è piuttosto nota ed utilizzata. Tuttavia, concedere la possibilità agli utenti di modificare una query string "in chiaro", può costituire una minaccia alla sicurezza del vostro server.

Per questo motivo in quest' articolo si incoraggiano gli sviluppatori a criptare le query string, anche se queste non contengono dati confidenziali. Ovviamente ci sono ancora possibilità di modificare le query string, ma tramite un'appropriata gestione degli errori questa possibilità diviene innocua.

Per mantenere quest'articolo semplice, verrà usato l'algoritmo di criptazione DES, sebbene sia possibile sostituirlo facilmente con algoritmi più robusti.

Uno sguardo al codice

La parte principale della soluzione principale consiste in un modulo denominato HttpModule che decripta la query string e quindi soddisfa la richiesta del browser tramite un'ordinaria query string in chiaro:

<a href="iframe_queryasp1.html" title="Vedi esempio">Vedi codice</a>;

Come potete aver notato, se c'è una query string criptata per la richiesta corrente, il modulo termina automaticamente l'esecuzione della pagina corrente e inizia internamente l'esecuzione di una nuova richiesta per il server.

Il prossimo passo consiste nel registrare il modulo HttpModule nel file web.config:

<httpModules>
<add name="CryptoQueryStringUrlRemapper"
type="SmartSoft.QueryStringEncryption.CryptoQueryStringUrlRemapper"/>
</httpModules>

Ultimo passo, non dobbiamo dimenticare di criptare le query string prima di spedirle indietro al server:

<a href="iframe_queryasp1.html" title="Vedi esempio">Vedi codice</a>;

Come abbiam sottolineato in precedenza, la classe che gestisce la criptazione può essere facilmente rimpiazzara da una classe diversa con compito analogo.

N.B.: il metodo DecryptQueryStrings in CryptoQueryStringHandler contiene la seguente linea di codice:

return Encryption64.Decrypt(encryptedStrings.Replace(" ", "+"), key); 

Per cause ignote, la richiesta rimpiazza ogni carattere '+' nella query con un carattere vuoto.

SCARICA IL CODICE (Licenza CPOL).

 

Le ultime news
Stampa NewsStampa Pagina - Info sull'autoreInfo sull'autore
SEGNALA QUESTA LEZIONE AD UN AMICO CON ICQICQ o EMAILEMAIL
forumDISCUTI DI QUESTA LEZIONE SUL FORUM



Newsletter

Iscriviti alla nostra newsletter per ricevere novita e aggiornamenti dal nostro sito in modo GRATUITO!