【问题标题】:SecureString and IIS?SecureString 和 IIS?
【发布时间】:2012-03-18 10:03:32
【问题描述】:
  • 用户有一个ASPX 页面。

  • 它有textox 输入(用于密码)。

  • 用户填写他的密码。

  • 页面已提交到 IIS。

  • 它首先进入 iis。

  • 到此阶段,密码以纯文本形式保存在内存中。

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

  • 做一些计算后,页面正在发送给客户端。


来自 IIS POV:

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

【问题讨论】:

    标签: c# asp.net iis securestring


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 2011-07-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-03-01
        相关资源
        最近更新 更多