SecureString和IIS?

时间:2012-03-18 10:03:32

标签: c# asp.net iis securestring

  • 用户有ASPX页。

  • 输入textox(密码)。

  • 用户填写密码。

  • 该页面已提交给IIS。

  • 首先进入iis。

  • 在此阶段,密码以明文形式存储在内存中。

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

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


来自 IIS POV:

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

2 个答案:

答案 0 :(得分:3)

根据您的故事,将密码存储在SecureString中毫无意义。它已经作为普通字符串存在于内存中,因此将其存储回SecureString并没有用。此外,当表单返回时,所有内容仍将以纯文本形式发回。

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

答案 1 :(得分:1)

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

            IntPtr stringPointer = Marshal.SecureStringToBSTR(objSecureString);
            string normalString = Marshal.PtrToStringBSTR(stringPointer);