Come cancellare in modo sicuro i parametri JavaScript dopo l'uso? [duplicare]

0

Quando passo una password come parametro a una funzione, presumo che finirà su uno stack o un heap.

Quando ritorna questa funzione, mi aspetto che la mia password sia ancora in memoria da qualche parte fino a quando non viene raccolta e spazzata via, prima di essere liberata.

Che cosa possono fare gli sviluppatori per cancellare in modo sicuro tali parametri non appena non sono più necessari o quando la funzione ritorna?

Assegnare "some string" o {dumb: "object"} a un parametro raggiungere questo?

    
posta philcolbourn 27.08.2018 - 13:05
fonte

1 risposta

1

Il tuo suggerimento, di sovrascrivere assegnando un nuovo valore alla variabile, non funzionerà (almeno non su eventuali implementazioni JS in uso nei browser comuni). Le stringhe JavaScript sono immutabili, il che significa che quando assegni un nuovo valore a una variabile stringa, una nuova stringa viene creata da qualche parte nell'heap. Non sovrascrive quello vecchio. Inserirlo in un oggetto, ad esempio nel secondo esempio, non lo modifica.

Il garbage collector in JavaScript è astratto e non ci sono API per interagire con esso. Quindi non puoi controllare direttamente ciò che fa o dire di cancellare un valore dalla memoria in una volta.

Potrebbe esserci qualche trucco intelligente / brutto trucco che puoi provare ad influenzare il comportamento del GC, ma dubito che ne varrà la pena. Ti consiglierei di pensare a quale minaccia stai cercando di difendere, e considera se è davvero un problema per te che la password rimanga in memoria.

Modifica: poiché dandavis evidenzia correttamente nei commenti, ci sono tipi JavaScript che può essere sovrascritto, ad es matrici digitate. Tuttavia, è ancora necessario ottenere i dati sensibili in uno di quelli senza che siano memorizzati in una variabile "ordinaria". Se lo copi solo da input.value non hai guadagnato nulla. Non so come farlo, e onestamente, non mi preoccuperei di provarci.

    
risposta data 27.08.2018 - 15:33
fonte

Leggi altre domande sui tag