SecureString and IIS?

本文关键字:IIS and SecureString | 更新日期: 2023-09-27 18:28:06

  • 用户有一个ASPX页面。

  • 它具有CCD_ 2输入(用于密码)。

  • 用户填写他的密码。

  • 页面被提交到IIS。

  • 它首先进入iis。

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

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

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


来自IISPOV:

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

SecureString and IIS?

根据您的故事,将密码存储在SecureString中没有什么意义。它曾经作为一个普通字符串出现在内存中,所以将它存储回SecureString中并没有那么有用。此外,当表单返回时,所有内容仍将以纯文本形式发送回。

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

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

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