Forum: Object-Pascal / Delphi-Language
Delphi
by Apollonius,
14. Dez 2008
Mir ist bekannt, dass SecureZeroMemory nur existiert, weil ZeroMemory in C wegoptimiert werden kann. Mir ging es nur darum, zu zeigen, dass auch Microsoft es als sinnvoll erachtet, sensible Daten im Speicher zu überschreiben.
Forum: Object-Pascal / Delphi-Language
Delphi
by Apollonius,
14. Dez 2008
Ihr ewigen Nörgler. :angel: Du hast natürlich recht.
Bezüglich Sinn/Unsinn: Man sollte durchaus Passwörter o.Ä. überschreiben, die der Nutzer eingegeben hat. Windows bietet sogar extra die Funktion SecureZeroMemory für solche Zwecke. Als Erklärung wird Folgendes genannt:
Auch wenn es hier um den Heap und nicht um den Stack geht, ist die Überlegung übertragbar. Es geht ja explizit nicht darum,...
Forum: Object-Pascal / Delphi-Language
Delphi
by Apollonius,
13. Dez 2008
Der Speicher wird freigegeben, wenn dem String ein neuer Wert zugewiesen wird oder er aus dem Scope läuft (die enthaltende Klasse freigegeben wird, die Prozedur beendet wird, in der der String als lokale Variable deklariert wurde, oder selbiges mit dem enthaltenden Record passiert). Wenn du explizit den Speicher freigeben willst, genügt es, einen Leerstring zuzuweisen.
Forum: Object-Pascal / Delphi-Language
Delphi
by Apollonius,
13. Dez 2008
Du kannst zum Beispiel Folgendes tun:
for i:=1 to Length(Str) do
Str := 'x';
Durch die For-Schleife wird jedes einzelne Zeichen im Speicher überschrieben, sodass es nicht mehr rekonstruiert werden kann.