[C#]C#學習筆記-隔離儲存,序列化

來源:互聯網
上載者:User

C#學習筆記-隔離儲存,序列化

羅朝輝(http://www.cnblogs.com/kesalin/)

《C#與.NET進階程式設計》讀書筆記

 

隔離儲存

1,由於.NET能載入來自不同位置來源的程式集,信任問題就很重要,我們要確保不同來源的程式集不會讀取系統的敏感性資料,進行不安全的操作。在.NET 平台上,是通過CAS(代碼訪問安全)的安全機制來處理信任問題的。使用CAS,CLR可以拒絕或授權許多可執行程式集的安全許可權。包括:機器目錄/檔案結構的操作;網路/Web/資料庫連接的操作;建立應用程式定義域/動態程式集;使用.NET反射服務;使用PInvoke進行Unmanaged 程式碼調用。

2,System.IO.IsolatedStorage命名空間中的類型可以使用隔離儲存,向裝有.NET的機器建立應用程式以讀寫資料到特殊位置。這可以理解為安全“沙箱”,在裡面CLR會允許I/O操作,即使應用程式是從外部URL下載或從其他方式弄來的,都會由系統管理員放在安全的沙箱中。使用隔離儲存我們可以在一定程度上持久化每一個使用者的資料,以確保其他應用程式不能直接或間接破壞這些資料;此外,使用持久儲存,我們的代碼不需要在應用程式內寫入程式碼路徑或目錄名,應用程式間接儲存資料到一個獨特的資料倉儲中,它會和代碼標識的一些方面進行關聯,比如它的URL,強名或X509數位簽章。

3,為瞭解決由下載或執行遠程.NET程式集引起的安全問題,CLR會自動檢測程式的標識並把它賦值給配置的程式碼群組中的一個,簡單來說,程式碼群組是一組符號相同標識(比如來源)的程式集。CLR用來檢測程式集屬於哪個程式碼群組的標準是指證據,除了來源,程式集也可以使用其他形式的證據放入程式碼群組,比如程式集強名,X509簽名數位識別碼或其他自訂標準。在評估了程式集證據以確定程式集屬於哪個程式碼群組之後,CLR就會查詢和程式碼群組關聯的許可權集來看程式集可以做什麼,更重要的是不可以做什麼。總的來說,程式碼群組和它們關聯的許可權構成了安全性原則,它被分成3個主要的層級(企業,機器以及使用者),使用這種分層方法,系統管理員就可以在公司層級以及機器和使用者的層級來建立唯一的策略。在所有安全性原則(企業,機器和使用者)被應用之後,程式集就會在.NET 運行庫下執行,如果程式集嘗試執行在其許可權集之外的代碼,CLR就會拋出運行時安全異常。

4,CLR首先從載入到記憶體中的程式集中讀取證據,這個過程是自動的,當然我們也可以以編程方式讀取證據或利用發射API和System.Security.Policy命名空間的Evidence來讀取。CLR利用讀取的證據把程式集放到程式碼群組中,每一個程式碼群組都被映射到一個具有預設安全設定集合(CLR用來判斷程式可做什麼或不可做什麼)的安全區域,因此程式碼群組就被授予一組許可權並給予一個最佳化名稱,如Full Trust,Internal等,每一個許可權集是控制各種安全設定的單個配置許可權的集合,因此程式集能進行的操作就被限定在這些許可權內。

5,隔離儲存的跟路徑在使用者目錄下的<user>\App Data\Local\IsolatedStorage(Vista)或<user>\Local Settings\Application Data\IsolatedStorage中,放到隔離儲存中的資料,和任何檔案系統一樣,可以被使用者複製,移動或刪除。隔離儲存有一些不足,它不會對放到隔離儲存中的資料進行自動加密,因此一些敏感性資料需要手動加密。


序列化

6,使用對象序列化,我們可以持久化一個對象的狀態到任何System.IO.Stream派生的類型中。我們可以使用[Serializable]屬性類別序列化類別;如果某個域不需要被序列化,只需在這個域前加上[NonSerialized]特性,這樣做可以減少持久化資料的大小。

7,使用BinaryFormatter持久化一個對象,會將它的所有需要序列化欄位序列化;如果使用XmlSerializer或SoapFormatter類型的話,只有公用欄位資料或擁有公用屬性的私人資料可以被序列化。

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.