DataProtection API (DPAPI) è una delle novità introdotta con Windows 2000, che consente di utilizzare una cifratura su dati riservati (ad esempio salvati nel web.config), per rendere meno vulnerabili le applicazioni.
Capita spesso che il web.config contenga informazioni sensibili quali la stringa di connessione ad un database o le credenziali di accesso ad un servizio e DPAPI ci viene incontro con un meccanismo di cifratura che si implementa abbastanza facilmente.
Per prima cosa occorre creare una class libray specifica che, attraverso Interop, fornisca alle nostre classi l'accesso alle funzioni di DPAPI, che sono offerte da oggetti COM installati direttamente dal sistema operativo.
E' allegata a questo script e va referenziata nei progetti in cui se ne dovrà fare uso.
Lo script di oggi si occupa della prima parte, quella di cifratura dei dati, mentre il prossimo si occuperà del contrario.
Nel nostro esempio creeremo una pagina che utilizzerà questa funzione per creare la stringa criptata per l'accesso al nostro database, da salvare poi nel web.config:
using ASPItalia.com.Security; // testo da rendere cifrato public string Crypt(string originalText) { // creo un'istanza della classe che usa DPAPI DPAPI dp = new DPAPI(DPAPI.Store.USE_MACHINE_STORE); // conversione in array di byte byte[] data = Encoding.ASCII.GetBytes(originalText); // stringa cifrata return Convert.ToBase64String(dp.Encrypt(data,null)); }
La chiave utilizzata da DPAPI è univoca per ogni computer, dunque la stessa stringa non può essere decifrata su un altro computer.
Per questa ragione la stringa stessa deve essere creata, ad esempio attraverso una pagina web protetta dall'autenticazione, sullo stesso server web sulla quale sarà utilizzata.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.