SecureString and IIS?
本文关键字:IIS and SecureString | 更新日期: 2023-09-27 18:28:06
-
用户有一个
ASPX
页面。 -
它具有CCD_ 2输入(用于密码)。
-
用户填写他的密码。
-
页面被提交到IIS。
-
它首先进入iis。
-
到这个阶段,密码以明文形式存储在内存中。
-
现在,Asp.net将其密码放入安全字符串中。
-
在进行了一些计算之后,页面将被发送到客户端。
来自IISPOV:
实际上,他仍然将密码视为纯文本。。。不是吗?
根据您的故事,将密码存储在SecureString
中没有什么意义。它曾经作为一个普通字符串出现在内存中,所以将它存储回SecureString
中并没有那么有用。此外,当表单返回时,所有内容仍将以纯文本形式发送回。
在这些情况下,最好确保服务器-客户端通信的安全(即使用SSL),而不是试图保护系统免受攻击者的攻击,这些攻击者可以访问计算机、分析内存并提取密码(!)。
读取SecureString更为复杂。没有简单的ToString方法,这也是为了确保数据的安全。要读取数据,C#开发人员必须直接访问内存中的数据。幸运的是,.NET框架使它变得相当简单。使用System.Runtime.InteropServices.Marsal类的适当成员(如SecureStringToBSTR方法)来操作SecureString对象的值。
IntPtr stringPointer = Marshal.SecureStringToBSTR(objSecureString);
string normalString = Marshal.PtrToStringBSTR(stringPointer);