background image

      这就带来了最主要的问题, 你无法准确控制或者预测一个特定字符串的生命周期. 一个

string 形式呈现的敏感数据(比如密码)很有可能在内存中一直存在, 而你却预测

它在超出某个特定函数的作用域的时候就被垃圾回收了

. 这样, 当发生操作系统换

页 的 时 候

( 而 这 也 往 往 是 可 能 发 生 的 ),   这 个 敏 感 数 据 就 被 保 存 到 本 地 文 件

pagefile.sys 当中, 或者当操作系统休眠的时候, 敏感数据进入 hiberfil.sys 中.一

个可能的敏感数据泄漏过程是

:

 

 

使用

SecureString 类

      现在既然 String 靠不住了,我们能有什么简单的方法来特别的保护我的敏感数据吗? 幸

运的是

, .NET 从 Version 2.0 开始, 为我们提供了一套基于 DPAPI

 

的解决方法

SecureString.

      SecureString 类具有以下特性:

SecureString 中的内容是加密之后的,而不是平文;

使用

windows 的加密方案 DPAPI ;

SecureString 只能在基于 NT 的平台上使用