Как проверить, содержит ли SecureString определенный текст?
Я пытаюсь увидеть, мой ли SecureString
содержит определенный текст.
Я мог бы сделать это так:
var sstr = new SecureString();
...
//sstr is now appended with a set of characters
if(sstr.ToString().Contains("Hello world")) {
//do something
}
Это работает, но момент, когда я делаю sstr.ToString()
кажется, я только что написал содержание в SecureString
в память, и это полностью побеждает цель использования SecureString
,
Как я должен проверить, является ли SecureString
содержит текст?
1 ответ
Лучший подход, чтобы проверить это, не победив SecureString
цель находится в вашем цикле буфера вывода процесса, прежде чем он попадет в SecureString
защищенный буфер. Но в лучшем случае, если вы сделаете это, вы создадите простую строку памяти из последних N символов (равную N длины "Hello world"), что будет немного небезопасно. Менее небезопасно, чем вызов SecureString.ToString(), конечно, потому что, как вы уже заявили, он сохранит весь текст в простой памяти, что противоречит цели.