Bei iOS habe ich mich gefragt, ob ich den vom Benutzer angegebenen Passwort-Wert lesen kann:
%Vor%Ich mag es einfach nicht, sensible Daten im RAM baumeln zu lassen. Irgendeine Idee, wie man es ausschließt?
Grundsätzlich kann man das wirklich nicht. Es gibt Fehler, die Apple bei genau diesem Problem eingereicht hat. Zusätzlich gibt es Probleme mit UITextField
und NSString
bei einem Minimum.
Um den Kommentar in einer jetzt gelöschten Antwort von @Leo Natan zu wiederholen:
Durch das Freigeben des umschließenden NSString-Objekts wird die Zeichenfolge nicht garantiert Bytes sind Nullen im Speicher. Auch wenn ein Gerät jailbroken ist, alle Sandboxing Apple Versprechungen werden nichts nützen. In diesem Fall es gibt wenig, was man tun kann, da es möglich ist, das Ganze zu tauschen Runtime in der Mitte der Anwendung läuft, dies bekommt die Passwort aus dem Speicher.
Bitte fügen Sie einen weiteren Fehler bei Apple ein, der dies anfordert, je mehr desto besser.
Während NSString
diese Fähigkeit nicht hat (aus Gründen der Kapselung an anderer Stelle erwähnt), sollte es nicht too sein, dass Ihre App normale alte C-Strings verwendet, die einfach sind Zeiger auf Speicher. Sobald Sie diesen Zeiger haben, ist es ziemlich einfach, Dinge zu beseitigen, wenn Sie fertig sind.
Dies hilft nicht bei benutzerdefinierten Textfeldern (die NSString
-s verwenden und wir können sie nicht ändern), aber Sie können sicher alle sensiblen Daten Ihrer App behalten im zeigerbasierten Speicher.
Ich habe nicht damit experimentiert (ich habe kein aktuelles jailbroken Gerät), aber es könnte auch interessant sein, mit NSMutableString
zu experimentieren - etwas wie:
HINWEIS: Ich habe keine Ahnung, ob das macht, was Sie wollen; Es ist nur etwas, an das ich beim Eintippen meiner früheren Antwort gedacht habe. Selbst wenn es jetzt funktioniert, denke ich, hängt es von der Implementierung ab, die fragil ist (was bedeutet: in Zukunft zu brechen), sollte also nicht verwendet werden.
Trotzdem, könnte eine interessante Übung sein! :)
Tags und Links objective-c security cocoa memory-management cocoa-touch