2009-06-10 17 views
24

Todos los ejemplos que he visto terminan convirtiendo un SecureString en una cadena estándar antes de usarlo, derrotando el objeto. ¿Cuál es una buena forma de usar una cadena segura sin este problema?¿Cómo uso SecureString de forma segura?

Sé que puedo ordenar el SecureString a un BSTR, pero ¿qué puedo hacer con este BSTR? ¿Puedo recuperar los personajes de a uno por vez? ¿Si es así, cómo?

Respuesta

0

creo que el MSDN Page que describe el SecureString dice mejor:

Representa el texto que debe mantenerse confidencial.

SecureStrings no están destinados a ser utilizados como cadenas. Se supone que tienen acceso limitado a los titulares de información que deberían estar sujetos a una mayor seguridad.

Si desea modificar el contenido de un SecureString, todos los métodos necesarios están ahí.

Sin embargo, si necesita obtener el valor de la cadena segura, debe ToString() ya que ningún otro método está expuesto a hacer esto.

En otras palabras, no use SecureStrings como cadenas.

+13

ToString no devuelve el contenido de la cadena, solo el nombre del tipo de objeto. Puede ordenar SecureString en un bstr, pero no sé cómo puede usarlo desde ese momento. El hecho de que sea confidencial no significa que no necesite trabajar con él. ¡Un número de tarjeta de crédito es confidencial pero aún quiero el dinero! –

4

Este enlace incluye mucha información útil, que incluye cómo obtener un bloque de memoria no administrado para pasar la cadena al código nativo (que también es seguro), una clase BCL que lo usa y enlaces a un par de ejemplos:

http://bartdesmet.net/blogs/bart/archive/2006/03/31/3851.aspx

lo principal es que no se utiliza realmente mucho todavía, pero que son libres de tomar sus propias bibliotecas que dependen de ella.

Cuestiones relacionadas