Nei linguaggi di raccolta dei rifiuti (JavaScript), posso sovrascrivere in modo sicuro i dati?

2

Comprendendo che la garbage collection e la gestione della memoria sono implementate in modo diverso in ambienti diversi per semplicità, questa domanda si focalizzerà su JavaScript (V8 o Seamonkey).

Mi rendo conto che la garbage collection è un mezzo per determinare se una porzione di memoria debba essere deallocata o meno. L'esempio più semplice che conosco è l'impostazione di una variabile su null :

var x = 'foobar';
// x)-┐
//    V
//   ┌-┬-┬-┬-┬-┬-┐
//   |f|o|o|b|a|r|
//   └-┴-┴-┴-┴-┴-┘
x = null;
// x)--> null
//
//   ┌-┬-┬-┬-┬-┬-┐
//   |f|o|o|b|a|r| Eligible to be garbage collected
//   └-┴-┴-┴-┴-┴-┘

Quindi stavo riflettendo su come posso cambiare il valore in modo sicuro in modo che non sia disponibile per il trucco? Mi rendo conto che questo è un esempio puramente inventato. Il motivo per cui lo chiedo è capire meglio come viene allocata la memoria in JavaScript e se ci sono metodi di manipolazione dei dati che eviterebbero la riallocazione della memoria, lasciando un po 'di esso a sporcare lo spazio di memoria libero.

In altre parole, posso modificare i valori di memoria in JavaScript o la riassegnazione è l'unico modo per lasciarlo nella memoria libera?

Per illustrare ulteriormente il mio esempio inventato, diciamo che voglio memorizzare una password ma poi offuscarla in modo sicuro prima di inviarla al terreno dei raccoglitori. Credo che la riassegnazione sarebbe simile a questa:

var x = 'foobar';
// x)-┐
//    V
//   ┌-┬-┬-┬-┬-┬-┐
//   |f|o|o|b|a|r|
//   └-┴-┴-┴-┴-┴-┘
x = '******';
// x)--------------┐
//                 V
//   ┌-┬-┬-┬-┬-┬-┐┌-┬-┬-┬-┬-┬-┐
//   |f|o|o|b|a|r||*|*|*|*|*|*|
//   └-┴-┴-┴-┴-┴-┘└-┴-┴-┴-┴-┴-┘
//    \_________/
//         |
//         Eligible for garbage collection
x = null;
// x)--> null
//
//   ┌-┬-┬-┬-┬-┬-┐┌-┬-┬-┬-┬-┬-┐
//   |f|o|o|b|a|r||*|*|*|*|*|*|
//   └-┴-┴-┴-┴-┴-┘└-┴-┴-┴-┴-┴-┘
//    \_________/  \_________/
//         |            |
//         Eligible for garbage collection

Quindi posso manipolare la prima partizione di memoria in modo che i valori non vengano lasciati in memoria senza riferimento, ma sostituiti, in modo che una scansione della memoria trovi la sostituzione anziché il vecchio valore?

    
posta Sukima 06.10.2015 - 14:42
fonte

1 risposta

2

"So I was musing how can I securely change the value so that it isn't available to poking?"

non puoi. Non hai accesso alla posizione di memoria effettiva in cui sono archiviati i dati, quindi non puoi determinare dove stai scrivendo.
È probabile che il tentativo di sovrascrivere i dati scriva interamente in un'altra posizione.

    
risposta data 06.10.2015 - 15:05
fonte

Leggi altre domande sui tag