有关创建以System.String出它不保护你的SecureString的所有预订一边,怎么能做到呢?
如何将普通的System.Security.SecureString转换为System.String?
我相信很多熟悉SecureString的人会回应说,永远不应该将SecureString转换为普通的.NET字符串,因为它会删除所有安全保护. 我知道.但是现在我的程序用普通字符串完成所有操作,我正在尝试增强其安全性,虽然我将使用返回SecureString的API给我,但我并不是想用它来增加我的安全性.
我知道Marshal.SecureStringToBSTR,但我不知道如何取出BSTR并从中制作System.String.
对于那些可能要求知道我为什么要这样做的人,好吧,我正在从用户那里获取密码并将其作为html表单POST提交以将用户登录到网站.所以......这真的必须使用托管的,未加密的缓冲区.如果我甚至可以访问非托管的,未加密的缓冲区,我想我可以在网络流上进行逐字节流写入,并希望这样可以保证密码的安全性.我希望能够回答至少其中一种情况.
我相信我误解了一个基本部分SecureString.我知道这string是不可变的,并且在堆上找到密码或敏感数据作为明文.
我正在努力理解的是,如何SecureString在需要验证数据库中哈希密码的客户端应用程序中使用?
这是我的背景:
SecureString通过SecurePassword属性将密码存储在a中.怎么办?如何SecureString首先将WITHOUT重新转换为字符串?
到目前为止我收到的所有建议都是编写扩展方法转换SecureString为String,哈希,然后将其发送到db进行验证.但这打败了整个演习!
我必须接受SecureString在我提到的上下文中没用的东西并使用普通的string吗?