Wydzielona pamięć masowa

W przypadku aplikacji klasycznych izolowany magazyn jest mechanizmem przechowywania danych, który zapewnia izolację i bezpieczeństwo przez zdefiniowanie ustandaryzowanych sposobów kojarzenia kodu z zapisanymi danymi. Standaryzacja oferuje także inne korzyści. Administratorzy mogą używać narzędzi przeznaczonych do wykonywania operacji na wydzielonej pamięci masowej w celu konfigurowania ilości miejsca przeznaczonego na pliki, ustawiania zasad zabezpieczeń i usuwania nieużywanych danych. Dzięki wydzielonej pamięci masowej kod nie wymaga unikatowych ścieżek określających bezpieczne lokalizacje w systemie plików, a dane są chronione przed innymi aplikacjami, które mają dostęp tylko do wydzielonej pamięci masowej. Ustalona informacja, która wskazuje, gdzie jest zlokalizowany obszar pamięci aplikacji nie jest potrzebna.

Ważne

Izolowany magazyn nie jest dostępny dla aplikacji ze Sklepu Windows 8.x. Zamiast tego użyj klas danych aplikacji w Windows.Storage przestrzeniach nazw zawartych w interfejsie API środowisko wykonawcze systemu Windows do przechowywania lokalnych danych i plików. Aby uzyskać więcej informacji, zobacz Dane aplikacji w Centrum deweloperów systemu Windows.

Przedziały i magazyny danych

Gdy aplikacja przechowuje dane w pliku, należy starannie wybrać nazwę pliku i lokalizację magazynu, aby zminimalizować możliwość, że lokalizacja magazynu będzie znana innej aplikacji, a tym samym podatna na uszkodzenie. Bez standardowego systemu do zarządzania tymi problemami, improwizowane techniki, które minimalizują konflikty magazynu, mogą być złożone, a wyniki mogą być zawodne.

Dzięki wydzielonej pamięci masowej dane są zawsze izolowane według użytkownika i zestawu. Poświadczenia, takie jak pochodzenie lub silna nazwa zestawu, określają tożsamość zestawu. Użycie podobnych poświadczeń umożliwia też izolowanie danych według domeny aplikacji.

Gdy jest używana wydzielona pamięć masowa, aplikacja zapisuje dane w unikatowym przedziale danych skojarzonym z pewnymi aspektami tożsamości kodu, takimi jak wydawca lub podpis. Przedział danych jest abstrakcyjną, a nie konkretną lokalizacją w pamięci masowej; składa się z co najmniej jednego pliku wydzielonej pamięci masowej, nazywanego magazynem, który zawiera rzeczywistą lokalizację katalogu, w którym są przechowywane dane. Na przykład aplikacja może mieć skojarzony przedział danych, a katalog w systemie plików będzie implementować magazyn, w którym w rzeczywistości są przechowywane dane dla tej aplikacji. Dane zapisane w magazynie mogą być dowolnego rodzaju, od informacji o preferencjach użytkownika po informacje o stanie aplikacji. Lokalizacja przedziału danych jest niewidoczna dla dewelopera. Magazyny zazwyczaj znajdują się na komputerze klienckim, ale aplikacje serwerowe mogą używać izolowanych magazynów do przechowywania informacji, personifikując użytkownika, w imieniu którego działają. Wydzielona pamięć masowa może także przechowywać informacje na serwerze, używając profilu mobilnego użytkownika, dzięki czemu takie informacje mogą podróżować razem z użytkownikiem mobilnym.

Limity izolowanych magazynów

Przydział to limit ilości wydzielonej pamięci masowej, której można używać. Przydział zawiera bajty w przestrzeni plików, a także zapas skojarzony z katalogiem i innymi informacjami w magazynie. Magazyn izolowany używa przydziałów uprawnień, które są limitami magazynu ustawionymi przy użyciu IsolatedStoragePermission obiektów. Jeśli spróbujesz zapisać dane, które przekraczają limit przydziału, IsolatedStorageException zostanie zgłoszony wyjątek. Zasady zabezpieczeń, które można modyfikować za pomocą narzędzia .NET Framework Configuration Tool (Mscorcfg.msc), określają uprawnienia udzielane kodowi. Kod, który został przyznany IsolatedStoragePermission , jest ograniczony do używania nie więcej miejsca do magazynowania, niż zezwala na UserQuota to właściwość. Jednak kod może obejść przedziały uprawnień, prezentując różne tożsamości użytkownika, więc przydziały uprawnień pełnią rolę wytycznych dotyczących zachowania kodu, a nie stałych limitów zachowania kodu.

Przydziały nie są wymuszane w magazynach mobilnych. Z tego powodu kod musi mieć nieco wyższy poziom uprawnień, aby mógł ich używać. Wartości wyliczenia AssemblyIsolationByRoamingUser i DomainIsolationByRoamingUser określają uprawnienia do używania izolowanego magazynu dla użytkownika mobilnego.

Bezpieczny dostęp

Wydzielona pamięć masowa umożliwia częściowo zaufanym aplikacjom przechowywanie danych w sposób kontrolowany przez zasady zabezpieczeń komputera. Jest to szczególnie przydatne w przypadku pobranych składników, które użytkownik może chcieć uruchomić z zachowaniem ostrożności. Zasady zabezpieczeń rzadko udzielają uprawnień kodu tego rodzaju podczas uzyskiwania dostępu do systemu plików przy użyciu standardowych mechanizmów We/Wy. Jednak kod uruchomiony na komputerze lokalnym, w sieci lokalnej lub w Internecie ma domyślnie udzielone prawo do używania wydzielonej pamięci masowej.

Na podstawie odpowiedniego poziomu zaufania administratorzy mogą określić, ile wydzielonej pamięci masowej jest dostępnej dla aplikacji lub użytkownika. Ponadto administratorzy mogą całkowicie usuwać utrwalone dane użytkownika. Aby utworzyć izolowany magazyn lub uzyskać do tego dostępu, należy udzielić odpowiedniego IsolatedStorageFilePermission uprawnienia do kodu.

Aby uzyskać dostęp do wydzielonej pamięci masowej, kod musi mieć wszystkie niezbędne natywne prawa platformy systemu operacyjnego. Wymagana jest zgodność z listami kontroli dostępu (ACL) określającymi, którzy użytkownicy mają prawa do używania systemu plików. Aplikacje platformy .NET mają już prawa systemu operacyjnego do uzyskiwania dostępu do izolowanego magazynu, chyba że wykonują personifikację (specyficzną dla platformy). W tym przypadku aplikacja jest odpowiedzialna za sprawdzanie, czy tożsamość personifikowanego użytkownika ma prawidłowe prawa systemu operacyjnego do uzyskiwania dostępu do wydzielonej pamięci masowej. Ten dostęp oferuje uruchomionemu lub pobranemu z sieci web kodowi wygodny sposób odczytu lub zapisu w obszarze pamięci masowej związanym z konkretnym użytkownikiem.

Aby kontrolować dostęp do izolowanego magazynu, środowisko uruchomieniowe języka wspólnego używa IsolatedStorageFilePermission obiektów. Każdy obiekt ma właściwości, które określają następujące wartości:

  • Dozwolone użycie, które wskazuje typ dozwolonego dostępu. Wartości są elementami IsolatedStorageContainment członkowskimi wyliczenia. Aby uzyskać więcej informacji na temat tych wartości, zobacz tabelę w następnej sekcji.

  • Przydział pamięci, tak jak omówiono w poprzedniej sekcji.

Środowisko uruchomieniowe wymaga IsolatedStorageFilePermission uprawnień, gdy kod najpierw próbuje otworzyć magazyn. Decyduje, czy przyznać to uprawnienie, na podstawie tego, ile kodu jest zaufany. Jeśli uprawnienie zostanie przyznane, dozwolone wartości użycia i limitu przydziału magazynu są określane przez zasady zabezpieczeń i przez żądanie kodu dla IsolatedStorageFilePermissionelementu . Zasady zabezpieczeń są ustawiane przy użyciu narzędzia .NET Framework Configuration Tool (Mscorcfg.msc). Wszystkie obiekty wywołujące w stosie wywołań są sprawdzane w celu zagwarantowania, że każdy obiekt wywołujący ma co najmniej jedno odpowiednie dozwolone użycie. Środowisko uruchomieniowe sprawdza też przydział określony przez kod, który otworzył lub utworzył magazyn, w którym mają być zapisywane pliki. Jeśli warunki są spełnione, jest udzielane uprawnienie. Przydział jest sprawdzany ponownie za każdym razem, gdy plik jest zapisywany w magazynie.

Kod aplikacji nie jest wymagany do żądania uprawnień, ponieważ środowisko uruchomieniowe języka wspólnego przyzna dowolne elementy IsolatedStorageFilePermission odpowiednie na podstawie zasad zabezpieczeń. Istnieją jednak dobre powody, aby zażądać określonych uprawnień wymaganych przez aplikację, w tym IsolatedStorageFilePermission.

Dopuszczalne użycie i zagrożenia zabezpieczeń

Dozwolone użycie określone przez IsolatedStorageFilePermission program określa stopień, w jakim kod będzie mógł tworzyć i używać izolowanego magazynu. W poniższej tabeli pokazano, jak dozwolone użycie określone w uprawnieniu odpowiada typom izolacji, i podsumowano zagrożenia bezpieczeństwa skojarzone z każdym dozwolonym użyciem.

Dozwolone użycie Typy izolacji Wpływ na zabezpieczenia
None Użycie wydzielonej pamięci masowej nie jest dozwolone. Brak wpływu na zabezpieczenia.
DomainIsolationByUser Izolacja według użytkownika, domeny i zestawu. Każdy zestaw ma oddzielny podmagazyn w domenie. Magazyny używające tego uprawnienia są także niejawnie izolowane przez komputer. Ten poziom uprawnień zostawia zasoby otwarte do nieautoryzowanego użycia, mimo że wymuszone przydziały utrudniają takie użycie. Takie działanie jest znanej pod nazwą „ataku typu odmowa usługi”.
DomainIsolationByRoamingUser Taki sam jak DomainIsolationByUser, ale magazyn jest zapisywany w lokalizacji, która będzie wędrować, jeśli profile użytkowników mobilnych są włączone, a przydziały nie są wymuszane. Przydziały muszą być wyłączone, więc zasoby pamięci masowej są bardziej podatne na atak typu „odmowa usługi”.
AssemblyIsolationByUser Izolacja według użytkownika i zestawu. Magazyny używające tego uprawnienia są także niejawnie izolowane przez komputer. Na tym poziomie są wymuszane przydziały, aby zapobiegać atakom typu „odmowa usługi”. Taki sam zestaw w innej domenie może mieć dostęp do magazynu, przez co możliwe jest przeciekanie informacji między aplikacjami.
AssemblyIsolationByRoamingUser Taki sam jak AssemblyIsolationByUser, ale magazyn jest zapisywany w lokalizacji, która będzie wędrować, jeśli profile użytkowników mobilnych są włączone, a przydziały nie są wymuszane. Tak samo jak w systemie AssemblyIsolationByUser, ale bez limitów przydziału zwiększa się ryzyko ataku typu "odmowa usługi".
AdministerIsolatedStorageByUser Izolacja według użytkownika. Zazwyczaj tylko narzędzia administracyjne lub narzędzia do debugowania używają tego poziomu uprawnień. Dostęp z użyciem tego uprawnienia umożliwia kodowi wyświetlanie i usuwanie dowolnych plików lub katalogów użytkownika przechowywanych w wydzielonej pamięci masowej (niezależnie do izolacji zestawu). Zagrożenia to m.in. wycieki informacji i utrata danych.
UnrestrictedIsolatedStorage Izolacja według wszystkich użytkowników, domen i zestawów. Zazwyczaj tylko narzędzia administracyjne lub narzędzia do debugowania używają tego poziomu uprawnień. To uprawnienie tworzy potencjalną możliwość naruszenia zabezpieczeń wszystkich izolowanych magazynów wszystkich użytkowników.

Sejf ty izolowanych składników magazynu w odniesieniu do niezaufanych danych

Ta sekcja dotyczy następujących struktur:

  • .NET Framework (wszystkie wersje)
  • .NET Core 2.1+
  • .NET 5+

Programy .NET Framework i .NET Core oferują izolowany magazyn jako mechanizm utrwalania danych dla użytkownika, aplikacji lub składnika. Jest to starszy składnik przeznaczony głównie dla obecnie przestarzałych scenariuszy zabezpieczeń dostępu do kodu.

Różne izolowane interfejsy API magazynu i narzędzia mogą służyć do odczytywania danych przez granice zaufania. Na przykład odczytywanie danych z całego zakresu maszyny może agregować dane z innych, prawdopodobnie mniej zaufanych kont użytkowników na maszynie. Składniki lub aplikacje odczytywane z zakresów magazynu izolowanego na całej maszynie powinny mieć świadomość konsekwencji odczytywania tych danych.

Interfejsy API z uwzględnieniem zabezpieczeń, które mogą odczytywać z całego zakresu maszyny

Składniki lub aplikacje wywołujące dowolny z następujących interfejsów API odczytanych z zakresu całego komputera:

Na izolowane narzędziestoreadm.exe magazynu ma wpływ, jeśli jest wywoływane z przełącznikiem /machine , jak pokazano w poniższym kodzie:

storeadm.exe /machine [any-other-switches]

Narzędzie izolowanego magazynu jest udostępniane w ramach programu Visual Studio i zestawu .NET Framework SDK.

Jeśli aplikacja nie obejmuje wywołań do powyższych interfejsów API lub jeśli przepływ pracy nie wymaga wywołania storeadm.exe w ten sposób, ten dokument nie ma zastosowania.

Wpływ w środowiskach wielu użytkowników

Jak wspomniano wcześniej, wpływ zabezpieczeń tych interfejsów API wynika z danych zapisanych w jednym środowisku zaufania jest odczytywany z innego środowiska zaufania. Magazyn izolowany zazwyczaj używa jednej z trzech lokalizacji do odczytu i zapisu danych:

  1. %LOCALAPPDATA%\IsolatedStorage\: na przykład , C:\Users\<username>\AppData\Local\IsolatedStorage\dla User zakresu.
  2. %APPDATA%\IsolatedStorage\: na przykład , C:\Users\<username>\AppData\Roaming\IsolatedStorage\dla User|Roaming zakresu.
  3. %PROGRAMDATA%\IsolatedStorage\: na przykład , C:\ProgramData\IsolatedStorage\dla Machine zakresu.

Pierwsze dwie lokalizacje są izolowane dla poszczególnych użytkowników. System Windows zapewnia, że różne konta użytkowników na tym samym komputerze nie mogą uzyskiwać dostępu do folderów profilu użytkownika. Dwa różne konta użytkowników, które korzystają z User tych kont lub User|Roaming sklepów, nie będą widzieć danych nawzajem i nie mogą ingerować w dane innych użytkowników.

Trzecia lokalizacja jest współdzielona na wszystkich kontach użytkowników na maszynie. Różne konta mogą odczytywać dane z tej lokalizacji i zapisywać je w tej lokalizacji.

Powyższe ścieżki mogą się różnić w zależności od używanej wersji systemu Windows.

Teraz rozważmy system z wieloma użytkownikami z dwoma zarejestrowanymi użytkownikami Mallory i Bobem. Mallory ma możliwość uzyskania dostępu do katalogu C:\Users\Mallory\profilu użytkownika i może uzyskać dostęp do udostępnionej lokalizacji magazynu w całej maszynie C:\ProgramData\IsolatedStorage\. Nie może uzyskać dostępu do katalogu C:\Users\Bob\profilu użytkownika Boba.

Jeśli Mallory chce zaatakować Boba, może zapisywać dane w całej lokalizacji magazynu maszyny, a następnie próbować wpłynąć Na Boba do odczytu ze sklepu w całym komputerze. Gdy Bob uruchamia aplikację, która odczytuje z tego sklepu, ta aplikacja będzie działać na danych mallory umieszczonych tam, ale z poziomu kontekstu konta użytkownika Boba. W pozostałej części tego dokumentu rozważane są różne wektory ataków i czynności, które aplikacje mogą wykonać, aby zminimalizować ryzyko tych ataków.

Uwaga

Aby taki atak się odbył, Mallory wymaga:

  • Konto użytkownika na maszynie.
  • Możliwość umieszczania pliku w znanej lokalizacji w systemie plików.
  • Wiedza, że Bob będzie w pewnym momencie uruchamiać aplikację, która próbuje odczytać te dane.

Nie są to wektory zagrożeń, które mają zastosowanie do standardowych środowisk pulpitu pojedynczego użytkownika, takich jak komputery domowe lub stacje robocze przedsiębiorstwa z jednym pracownikiem.

Elevation of privilege (podniesienie uprawnień)

Atak na podniesienie uprawnień występuje, gdy aplikacja Boba odczytuje plik Mallory'ego i automatycznie próbuje podjąć jakąś akcję na podstawie zawartości tego ładunku. Rozważmy aplikację, która odczytuje zawartość skryptu uruchamiania ze sklepu dla całej maszyny i przekazuje te treści do Process.Start. Jeśli Mallory może umieścić złośliwy skrypt w sklepie obejmującym całą maszynę, gdy Bob uruchomi swoją aplikację:

  • Jego aplikacja analizuje i uruchamia złośliwy skrypt Mallory'ego w kontekście profilu użytkownika Boba.
  • Mallory uzyskuje dostęp do konta Boba na komputerze lokalnym.

Denial of service (odmowa usługi)

Atak typu "odmowa usługi" występuje, gdy aplikacja Boba odczytuje plik Mallory'ego i ulega awarii lub w inny sposób przestaje działać poprawnie. Rozważ ponownie wymienioną wcześniej aplikację, która próbuje przeanalizować skrypt uruchamiania ze sklepu w całym komputerze. Jeśli Mallory może umieścić plik z źle sformułowaną zawartością w sklepie na całym komputerze, może:

  • Spowodowanie, że aplikacja Boba zgłosi wyjątek na początku ścieżki uruchamiania.
  • Uniemożliwianie pomyślnego uruchomienia aplikacji z powodu wyjątku.

Następnie zaprzeczyła Bobowi możliwość uruchamiania aplikacji na własnym koncie użytkownika.

Information disclosure (ujawnienie informacji)

Atak na ujawnienie informacji występuje, gdy Mallory może skłonić Boba do ujawnienia zawartości pliku, do którego Mallory zwykle nie ma dostępu. Rozważmy, że Bob ma tajny plik C:\Users\Bob\secret.txt , który Mallory chce odczytać. Zna ścieżkę do tego pliku, ale nie może go odczytać, ponieważ system Windows zabrania jej uzyskania dostępu do katalogu profilu użytkownika Boba.

Zamiast tego Mallory umieszcza twarde łącze do sklepu w całej maszynie. Jest to specjalny rodzaj pliku, który sam w sobie nie zawiera żadnej zawartości, a raczej wskazuje na inny plik na dysku. Próba odczytania twardego pliku linku spowoduje odczytanie zawartości pliku objętego linkiem. Po utworzeniu twardego linku Mallory nadal nie może odczytać zawartości pliku, ponieważ nie ma dostępu do miejsca docelowego (C:\Users\Bob\secret.txt) linku. Jednak Bob ma dostęp do tego pliku.

Gdy aplikacja Boba odczytuje z całego sklepu, teraz przypadkowo odczytuje zawartość jego secret.txt pliku, tak jakby sam plik był obecny w magazynie w całym komputerze. Gdy aplikacja Boba zakończy działanie, jeśli spróbuje ponownie zapisać plik w magazynie w całym komputerze, spowoduje to umieszczenie rzeczywistej kopii pliku w katalogu *C:\ProgramData\IsolatedStorage*. Ponieważ ten katalog jest czytelny przez dowolnego użytkownika na maszynie, Mallory może teraz odczytywać zawartość pliku.

Najlepsze rozwiązania w zakresie obrony przed tymi atakami

Ważne: jeśli środowisko ma wielu wzajemnie niezaufanych użytkowników, nie należy wywoływać interfejsu API IsolatedStorageFile.GetEnumerator(IsolatedStorageScope.Machine) ani wywoływać narzędzia storeadm.exe /machine /list. Oba te założenia zakładają, że działają na zaufanych danych. Jeśli osoba atakująca może zainicjować złośliwy ładunek w magazynie obejmującym całą maszynę, może to prowadzić do ataku na podniesienie uprawnień w kontekście użytkownika, który uruchamia te polecenia.

Jeśli działa w środowisku wielu użytkowników, rozważ ponowne użycie izolowanych funkcji magazynu przeznaczonych dla zakresu maszyny . Jeśli aplikacja musi odczytywać dane z całej maszyny, preferuj odczytywanie danych z lokalizacji, która jest zapisywalna tylko przez konta administratora. Katalog %PROGRAMFILES% i HKLM gałąź rejestru są przykładami lokalizacji, które można zapisywać tylko przez administratorów i czytelne dla wszystkich. W związku z tym dane odczytane z tych lokalizacji są uważane za wiarygodne.

Jeśli aplikacja musi używać zakresu maszyny w środowisku wielu użytkowników, zweryfikuj zawartość dowolnego pliku odczytanego z magazynu w całym komputerze. Jeśli aplikacja deserializuje wykresy obiektów z tych plików, rozważ użycie bezpieczniejszych serializatorów, takich jak XmlSerializer zamiast niebezpiecznych serializatorów, takich jak BinaryFormatter lub NetDataContractSerializer. Należy zachować ostrożność w przypadku głęboko zagnieżdżonych grafów obiektów lub grafów obiektów, które wykonują alokację zasobów na podstawie zawartości pliku.

Lokalizacje izolowanych magazynów

Czasami jest ono pomocne podczas weryfikowania zmiany w wydzielonej pamięci masowej za pomocą systemu plików systemu operacyjnego. Czasami mogą być też potrzebne informacje o lokalizacji plików wydzielonej pamięci masowej. Ta lokalizacja zmienia się w zależności od systemu operacyjnego. W poniższej tabeli pokazano główne lokalizacje w najbardziej popularnych systemach operacyjnych, w których jest tworzona wydzielona pamięć masowa. Znajdź katalogi Microsoft\IsolatedStorage w tej lokalizacji głównej. Musisz zmienić ustawienia folderów, aby wyświetlać ukryte pliki i foldery, co umożliwi zobaczenie wydzielonej pamięci masowej w systemie plików.

System operacyjny Lokalizacja w systemie plików
Windows 2000, Windows XP, Windows Server 2003 (uaktualnienie z systemu Windows NT 4.0) Magazyny z obsługą roamingu =

<SYSTEMROOT>\Profiles\<user>\Application Data

Magazyny bez obsługi roamingu =

<SYSTEMROOT>\Profiles\<user>\Local Ustawienia\Application Data
Windows 2000 — czysta instalacja (oraz uaktualnienia z systemu Windows 98 i Windows NT 3.51) Magazyny z obsługą roamingu =

<SYSTEMDRIVE>\Documents i Ustawienia\<user>\Application Data

Magazyny bez obsługi roamingu =

<SYSTEMDRIVE>\Documents and Ustawienia\<user>\Local Ustawienia\Application Data
Windows XP, Windows Server 2003 — czysta instalacja (i uaktualnienia z systemu Windows 2000 i Windows 98) Magazyny z obsługą roamingu =

<SYSTEMDRIVE>\Documents i Ustawienia\<user>\Application Data

Magazyny bez obsługi roamingu =

<SYSTEMDRIVE>\Documents and Ustawienia\<user>\Local Ustawienia\Application Data
Windows 8, Windows 7, Windows Server 2008, Windows Vista Magazyny z obsługą roamingu =

<SYSTEMDRIVE>\Users\<user>\AppData\Roaming

Magazyny bez obsługi roamingu =

<SYSTEMDRIVE>\Users\<user>\AppData\Local

Tworzenia, wyliczania i usuwania izolowanych magazynów

Platforma .NET udostępnia trzy klasy w System.IO.IsolatedStorage przestrzeni nazw, które ułatwiają wykonywanie zadań obejmujących izolowany magazyn:

Klasy wydzielonej pamięci masowej umożliwiają tworzenie, wyliczanie oraz usuwanie wydzielonej pamięci masowej. Metody wykonywania tych zadań są dostępne za pośrednictwem IsolatedStorageFile obiektu . Niektóre operacje wymagają IsolatedStorageFilePermission posiadania uprawnień reprezentujących prawo do administrowania izolowanym magazynem. Może być również konieczne posiadanie praw systemu operacyjnego w celu uzyskania dostępu do pliku lub katalogu.

Aby zapoznać się z serią przykładów, które przedstawiają typowe izolowane zadania magazynu, zobacz tematy z instrukcjami wymienionymi w tematach pokrewnych.

Scenariusze izolowanych magazynów

Wydzielona pamięć masowa jest przydatna w wielu sytuacjach, włączając w to następujące cztery scenariusze:

  • Pobrane formanty. Formanty kodu zarządzanego pobrane z Internetu nie mogą wykonywać operacji zapisu na dysku twardym za pośrednictwem zwykłych klas We/Wy, ale mogą używać wydzielonej pamięci masowej w celu utrwalania stanów aplikacji i ustawień użytkowników.

  • Magazyn składników współużytkowanych. Składniki współużytkowane przez różne aplikacje mogą używać wydzielonej pamięci masowej, aby umożliwiać kontrolowany dostęp do danych.

  • Magazyn na serwerze. Aplikacje serwerowe mogą używać wydzielonej pamięci masowej, aby dostarczać indywidualne magazyny wielu użytkownikom wysyłającym żądania do aplikacji. Ponieważ wydzielona pamięć masowa zawsze jest segregowana według użytkowników, serwer musi dokonać personifikacji użytkownika zgłaszającego żądanie. W takim przypadku dane są izolowane na podstawie tożsamości podmiotu zabezpieczeń, która jest tą samą tożsamością, której aplikacja używa do rozróżnienia między użytkownikami.

  • Roaming. Aplikacje mogą również używać wydzielonej pamięci masowej z mobilnymi profilami użytkownika. Dzięki temu użytkownik może uzyskiwać mobilny dostęp do swoich izolowanych magazynów, używając profilu.

Nie używaj izolowanego magazynu w następujących sytuacjach:

  • Do przechowywania tajemnic o wysokiej wartości, takich jak niezaszyfrowane klucze lub hasła, ponieważ wydzielona pamięć masowa nie jest chroniona przed wysoce zaufanym kodem, kodem niezarządzanym oraz zaufanymi użytkownikami komputera.

  • Do przechowywania kodu.

  • Do przechowywania ustawień konfiguracji i wdrażania kontrolowanych przez administratorów. (Preferencje użytkownika nie są uważane za ustawienia konfiguracji, ponieważ administratorzy nie mają kontroli nad nimi).

Wiele aplikacji używa bazy danych do przechowywania i izolowania danych; w takim przypadku jeden lub większa liczba wierszy w bazie danych może reprezentować pamięć masową dla określonego użytkownika. Można użyć wydzielonej pamięci masowej zamiast bazy danych, gdy liczba użytkowników jest mała, gdy obciążenie związane z użyciem bazy danych jest znaczące lub gdy nie istnieje infrastruktura baz danych. Również gdy aplikacja wymaga pamięci masowej, która będzie bardziej elastyczna oraz złożona niż to, co oferuje wiersz w bazie danych, wydzielona pamięć masowa może być wartą rozważenia alternatywą.

Nazwa opis
Typy izolacji Opis różnych typów izolacji.
Instrukcje: uzyskiwanie magazynów dla wydzielonej pamięci masowej Zawiera przykład użycia IsolatedStorageFile klasy w celu uzyskania magazynu izolowanego przez użytkownika i zestaw.
Instrukcje: wyliczanie magazynów dla wydzielonej pamięci masowej Pokazuje, jak użyć IsolatedStorageFile.GetEnumerator metody do obliczenia rozmiaru wszystkich izolowanych magazynów dla użytkownika.
Instrukcje: usuwanie danych z wydzielonej pamięci masowej Pokazuje, jak używać IsolatedStorageFile.Remove metody na dwa różne sposoby usuwania izolowanych magazynów.
Instrukcje: przewidywanie warunków braku miejsca w wydzielonej pamięci masowej Opis sposobu mierzenia ilości pozostałego miejsca w izolowanym magazynie.
Instrukcje: tworzenie plików i katalogów w wydzielonej pamięci masowej Przykłady tworzenia plików i katalogów w izolowanym magazynie.
Instrukcje: znajdowanie istniejących plików i katalogów w wydzielonej pamięci masowej Opis sposobu odczytywania struktury katalogów i plików w wydzielonej pamięci masowej.
Instrukcje: odczyt i zapis w plikach w wydzielonej pamięci masowej Przykład zapisywania ciągu w pliku w wydzielonej pamięci masowej i odczytywania go z powrotem.
Instrukcje: usuwanie plików i katalogów w wydzielonej pamięci masowej Opis sposobu usuwania plików i katalogów wydzielonej pamięci masowej.
We/Wy plików i strumieni Opis sposobu synchronicznego i asynchronicznego uzyskiwania dostępu do pliku i strumienia danych.

Odwołanie