J'ai une application qui prend une chaîne de la boîte de texte Windows Forms et la passe à une API qui utilise une chaîne comme paramètre. Je vois que la chaîne peut toujours être interrogée à partir de la mémoire de processus une fois la tâche terminée. J'ai rencontré des suggestions pour utiliser SecureString
pour les capacités de gestion de mémoire de chaîne. Mais, si je comprends bien, le but de la chaîne est vaincu si la chaîne sécurisée est construite à partir d'une chaîne ou si la valeur de la chaîne sécurisée est finalement stockée dans une chaîne.Comment supprimer une chaîne de la mémoire de processus?
S'il vous plaît suggérer quelle est la meilleure solution possible.
est-ce crypté sur le fil? Si non, pourquoi êtes-vous même préoccupé par cela en mémoire? –
Tout paramètre est transmis aux méthodes de la pile d'exécution. Lorsque la méthode est terminée, le point de pile d'exécution est restauré à l'emplacement avant l'appel de la méthode. Ainsi, toutes les variables utilisées par les méthodes sont toujours sur la pile et non accessibles. La méthode appelante doit détruire la variable avant de retourner pour retirer l'objet de la pile. – jdweng
Si elle provient d'un contrôle WinForms 'TextBox', alors il y a déjà un nombre inconnu/inconnaissable de copies de cette chaîne qui se cache partout. Vous ne pouvez pas réparer cette fuite. Réorganisez-le pour utiliser 'SecureString' ou acceptez que quelqu'un disposant d'un accès suffisant aux machines sur lesquelles ce code est exécuté * pourrait potentiellement lire ces données depuis la mémoire du processus. Mais gardez à l'esprit - quelqu'un avec ce niveau d'accès pourrait facilement avoir installé un keylogger de toute façon. –