michel_ hat geschrieben:
Was ich bisher im Netz gefunden hab hörte sich eher nach "Nein" an, da Python keinen direkten Speicherzugriff hat.
Das ist auch richtig so.
michel_ hat geschrieben:
Momentan überschreib ich die Variable 'pass' in der ich das Ergebnis der Funktion speichere einfach und hoffe das nichts übrig bleibt. Der Rückgabewert der Funktion an sich schwirrt dabei denke ich aber immer noch irgendwo rum?
Wenn das Passwort intern durch einen String repräsentiert wird, dürfte das "Überschreiben" genau gar nichts nützen, da Strings immutable sind. Insofern dürfte ein neuer Speicherbereich durch den Interpreter allokiert werden, wenn Du einen neuen String an den Namen bindest. Allerdings sind das auch Implementierungsdetails, auf die man sich eh nicht verlassen kann und sollte.
Du kannst aber per `del` den Namen löschen und dadurch indirekt erreichen, dass das bis dato an diesen Namen gebundene Objekt vom Garbage Collector gelöscht wird. Aber Vorsicht: Das klappt nur, wenn das Objekt an keinen anderen Namen mehr gebunden ist:
Code: Alles auswählen
In [94]: pw = getpass.getpass("PW:")
PW:
In [95]: pw
Out[95]: 'secret'
In [96]: backup = pw
In [97]: del pw
In [98]: backup
Out[98]: 'secret'
`pass` ist übrigens ein Schlüsselwort und kann nicht als Name verwendet werden - Dein gezeigter Code kann also nicht funktionieren
Ich denke aber mal, dass Du Dir da zu viel Gedanken machst. Wo siehst Du dabei ein Sicherheitsrisiko, welches in anderen technischen Lösungen nicht auch vorhanden wäre?