2012-03-18 25 views
0
  • 用戶有一個ASPX頁面。SecureString和IIS?

  • 它有textox輸入(用於密碼)。

  • 用戶填寫他的密碼。

  • 該頁面被提交給IIS。

  • 它首先去iis。

  • 在這個階段,密碼在純文本內存中。

  • 現在Asp.net把它的密碼放在安全字符串中。

  • 做了一些計算後,頁面正在發送給客戶端。


IIS POV:

他實際上仍然看到密碼爲純文本......是不是?

回答

3

根據您的故事,將密碼存儲在SecureString中是沒有意義的。它已經以普通字符串的形式出現在內存中,因此將其存儲回SecureString沒有用處。另外,當表單返回時,所有內容仍然會以純文本形式發回。

在這些情況下,最好是保護服務器 - 客戶端通信(即使用SSL),而不是試圖保護系統免受攻擊者的攻擊,他們可以訪問計算機,分析內存並提取密碼(! )。

1

讀取SecureString比較複雜。沒有簡單的ToString方法,這也是爲了保證數據的安全。要讀取數據,C#開發人員必須直接訪問內存中的數據。幸運的是,.NET Framework使它非常簡單。使用適當的System.Runtime.InteropServices.Marshal類的成員(例如SecureStringToBSTR方法)來操作SecureString對象的值。

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