Poiché non si ha accesso al server, è necessario eseguire il comando per crittografare le sezioni del proprio web.config tramite codice. È possibile farlo creando una semplice pagina Web ed eseguendola al caricamento della pagina o facendo clic sul pulsante. Di seguito è riportato il blocco di codice che dovrai eseguire, modificato solo leggermente dalla sorgente che ho preso da Microsoft (http://msdn.microsoft.com/en-us/library/system.configuration.sectioninformation.protectsection.aspx). Anche se ... questo codice in realtà non ha funzionato per me. Non che il codice non sia corretto, ma poiché il mio account non dispone dell'autorizzazione all'archivio chiavi Rsa, i risultati potrebbero variare. Se questo non funziona allora continuate a leggere per l'opzione 2.
' Get the current configuration file.'
Dim config As System.Configuration.Configuration = Web.Configuration.WebConfigurationManager.OpenWebConfiguration(Nothing)
' Get the section.'
Dim section As AppSettingsSection = CType(config.GetSection("appSettings"), AppSettingsSection)
' Protect (encrypt) the section.'
section.SectionInformation.ProtectSection("RSAProtectedConfigurationProvider")
' Save the encrypted section.'
section.SectionInformation.ForceSave = True
config.Save(ConfigurationSaveMode.Full)
credito: ho trovato che legame con il codice tramite Need Encrypted connection string and stmp information in the web.config.
Opzione 2: per motivi di sicurezza, si desidera comunque utilizzare il codice macchina in modo che se qualcuno riesce a scaricare il file web.config non sarà in grado di decodificare le impostazioni. Un modo per farlo è quello di crittografare tutte le impostazioni usando la chiave della macchina a mano e decrittografarle ogni volta che è necessario utilizzarle, oppure è possibile memorizzarle nella cache all'avvio di ogni app.
Per criptato e decifrare un valore chiave di applicazione che potrebbe usare codice come questo:
Dim encryptedString As String = Convert.ToBase64String(ProtectedData.Protect(System.Text.UTF8Encoding.UTF32.GetBytes("Testing"), Nothing, DataProtectionScope.LocalMachine))
Dim decryptedString As String = System.Text.UTF8Encoding.UTF32.GetString(ProtectedData.Unprotect(Convert.FromBase64String(encryptedString), Nothing, DataProtectionScope.LocalMachine))
Response.Write(encryptedString + " - " + decryptedString)
Come si conserva la chiave in un modo che consente all'applicazione di utilizzare la password senza lasciare la chiave in una posizione insicura ? – Tyrsius
Ci sono alcune opzioni per questo .... è possibile utilizzare la chiave presente in web.config (MachineKey), oppure creare la propria chiave e inserirla in un'opzione web.config crittografata. –
@Tyrsius - Ho aggiunto anche alcuni dettagli con le opzioni solo per darti dei pensieri. –