Tutte le prenotazioni sulla non protezione di SecureString mediante la creazione di un System.String di esso a parte, come può essere eseguito?Come convertire SecureString in System.String?
Come posso convertire un ordinario System.Security.SecureString in System.String?
Sono sicuro che molti di voi che hanno familiarità con SecureString risponderanno che non si dovrebbe mai trasformare un SecureString in una normale stringa .NET perché rimuove tutte le protezioni di sicurezza. Lo so. Ma in questo momento il mio programma fa tutto con le stringhe ordinarie comunque, e sto cercando di migliorare la sua sicurezza e anche se userò un'API che restituisce una SecureString per me sono non cercando di usarlo per aumentare il mio sicurezza.
Sono a conoscenza di Marshal.SecureStringToBSTR, ma non so come prendere quel BSTR e creare un System.String.
Per coloro che potrebbero chiedere di sapere perché vorrei farlo, beh, sto prendendo una password da un utente e la invio come un modulo HTML per registrare l'utente in un sito web. Quindi ... questo deve essere fatto con buffer gestiti, non crittografati. Se potessi anche ottenere l'accesso al buffer non gestito, non crittografato, immagino di poter scrivere byte in streaming byte per byte sullo stream della rete e spero che mantenga la password sicura per l'intero percorso. Sto sperando in una risposta ad almeno uno di questi scenari.
Ho avuto il mio voto anche anni dopo, grazie per l'aiuto! Solo una breve nota: funziona anche come statico, nella sua memoria. –
Ho usato 'StopWatch' e' SecureStringToString' ha impiegato 4,6 secondi per l'esecuzione. È lento per me. Qualcuno ha lo stesso tempo o qualcosa di più veloce? – radbyx
@radbyx In una configurazione di prova rapida e sporca, posso chiamarla 1000 volte in 76 ms. La prima invocazione richiede 0,3 ms e le successive invocazioni ~ 0,07 ms. Quanto è grande la tua stringa sicura e quale versione del framework stai usando? –