0
  • 用户有一个ASPX页面。

  • 它有textox输入(密码)。

  • 用户填写他的密码。

  • 页面被提交给 IIS。

  • 它首先进入 iis。

  • 在这个阶段,密码以纯文本形式存储在内存中。

  • 现在 Asp.net 将其密码放入安全字符串中。

  • 做一些计算后,页面被发送到客户端。


来自IIS POV:

他实际上仍然将密码视为纯文本……不是吗?

4

2 回答 2

3

根据您的故事,将密码存储在SecureString. 它曾经作为普通字符串存在于内存中,因此将其重新存储SecureString没有那么有用。另外,当表单返回时,所有内容仍将以纯文本形式发回。

在这些情况下,最好保护服务器-客户端通信(即使用 SSL),而不是试图保护系统免受可能访问计算机、分析内存和提取密码(!)的攻击者的攻击。

于 2012-03-18T10:15:55.167 回答
1

读取 SecureString 更复杂。没有简单的 ToString 方法,它也是为了保证数据的安全。要读取数据,C# 开发人员必须直接访问内存中的数据。幸运的是,.NET Framework 使它相当简单。使用 System.Runtime.InteropServices.Marshal 类的适当成员(例如 SecureStringToBSTR 方法)来操作 SecureString 对象的值。

            IntPtr stringPointer = Marshal.SecureStringToBSTR(objSecureString);
            string normalString = Marshal.PtrToStringBSTR(stringPointer);
于 2012-03-18T10:18:42.743 回答