La mia applicazione raggiunge una serie di servizi Web, come Twitter e Flickr. Usa le chiavi API di quei servizi e mi piacerebbe confonderli nei miei binari. (Non sono molto preoccupato per la pirateria o altro, ho solo bisogno di tenere segrete queste chiavi.)Come proteggere una chiave API in un'applicazione .NET
Qual è il modo migliore per farlo?
Se li memorizzo come const SecureString, ciò li mantiene fuori dalla memoria? La descrizione MSDN dice che il testo è "cancellato dalla memoria del computer quando non è più necessario", ma non è un const sempre in memoria?
Dotfuscator lo oscurerà nella mia assemblea? (Supponendo che posso farlo a work.)
Non è possibile. Se un utente malintenzionato vuole la tua chiave API, l'offuscamento del tuo binario non gli impedirà di accedervi. Chiunque altro non saprebbe cosa fare con la chiave comunque. –
Penso che SecureString aggraverebbe la situazione. Dal momento che è un grande cartello che dice "Guardami sono così segreto".SecureString protegge da cose come lo scambio di una chiave sul disco ma non contro un uso dannoso. – CodesInChaos
E anche la semplice intercettazione della tua richiesta http su Twitter dovrebbe essere banale. – CodesInChaos