IsolatedStorageContainment Enum
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Perhatian
Code Access Security is not supported or honored by the runtime.
Menentukan penggunaan penyimpanan terisolasi yang diizinkan.
public enum class IsolatedStorageContainment
[System.Obsolete("Code Access Security is not supported or honored by the runtime.", DiagnosticId="SYSLIB0003", UrlFormat="https://aka.ms/dotnet-warnings/{0}")]
public enum IsolatedStorageContainment
[System.Serializable]
public enum IsolatedStorageContainment
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public enum IsolatedStorageContainment
public enum IsolatedStorageContainment
[<System.Obsolete("Code Access Security is not supported or honored by the runtime.", DiagnosticId="SYSLIB0003", UrlFormat="https://aka.ms/dotnet-warnings/{0}")>]
type IsolatedStorageContainment =
[<System.Serializable>]
type IsolatedStorageContainment =
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type IsolatedStorageContainment =
type IsolatedStorageContainment =
Public Enum IsolatedStorageContainment
- Warisan
- Atribut
Bidang
AdministerIsolatedStorageByUser | 112 | Kemampuan administrasi tidak terbatas untuk penyimpanan pengguna. Memungkinkan penjelajahan dan penghapusan seluruh penyimpanan pengguna, tetapi tidak membaca akses selain identitas domain/perakitan pengguna sendiri. |
ApplicationIsolationByMachine | 69 | Penyimpanan diisolasi terlebih dahulu oleh komputer dan kemudian dengan aplikasi. Ini menyediakan penyimpanan data untuk aplikasi yang dapat diakses dalam konteks domain apa pun. Kompartemen data per aplikasi memerlukan kepercayaan tambahan karena berpotensi menyediakan "terowongan" antara aplikasi yang dapat membahayakan isolasi data aplikasi di situs Web tertentu. |
ApplicationIsolationByRoamingUser | 101 | Penyimpanan diisolasi terlebih dahulu oleh pengguna dan kemudian dengan bukti aplikasi. Penyimpanan akan menjelajah jika roaming data pengguna Windows diaktifkan. Ini menyediakan penyimpanan data untuk aplikasi yang dapat diakses dalam konteks domain apa pun. Kompartemen data per aplikasi memerlukan kepercayaan tambahan karena berpotensi menyediakan "terowongan" antara aplikasi yang dapat membahayakan isolasi data aplikasi di situs Web tertentu. |
ApplicationIsolationByUser | 21 | Penyimpanan diisolasi terlebih dahulu oleh pengguna dan kemudian dengan aplikasi. Penyimpanan juga diisolasi oleh komputer. Ini menyediakan penyimpanan data untuk aplikasi yang dapat diakses dalam konteks domain apa pun. Kompartemen data per aplikasi memerlukan kepercayaan tambahan karena berpotensi menyediakan "terowongan" antara aplikasi yang dapat membahayakan isolasi data aplikasi di situs Web tertentu. |
AssemblyIsolationByMachine | 64 | Penyimpanan diisolasi terlebih dahulu oleh komputer dan kemudian dengan rakitan kode. Ini menyediakan penyimpanan data untuk perakitan yang dapat diakses dalam konteks domain apa pun. Kompartemen data perakitan memerlukan kepercayaan tambahan karena berpotensi menyediakan "terowongan" antara aplikasi yang dapat membahayakan isolasi data aplikasi di situs Web tertentu. |
AssemblyIsolationByRoamingUser | 96 | Penyimpanan diisolasi terlebih dahulu oleh pengguna dan kemudian dengan bukti perakitan. Penyimpanan akan menjelajah jika roaming data pengguna Windows diaktifkan. Ini menyediakan penyimpanan data untuk perakitan yang dapat diakses dalam konteks domain apa pun. Kompartemen data perakitan memerlukan kepercayaan tambahan karena berpotensi menyediakan "terowongan" antara aplikasi yang dapat membahayakan isolasi data aplikasi di situs Web tertentu. |
AssemblyIsolationByUser | 32 | Penyimpanan diisolasi terlebih dahulu oleh pengguna lalu dengan rakitan kode. Penyimpanan juga diisolasi oleh komputer. Ini menyediakan penyimpanan data untuk perakitan yang dapat diakses dalam konteks domain apa pun. Kompartemen data perakitan memerlukan kepercayaan tambahan karena berpotensi menyediakan "terowongan" antara aplikasi yang dapat membahayakan isolasi data aplikasi di situs Web tertentu. |
DomainIsolationByMachine | 48 | Penyimpanan diisolasi terlebih dahulu oleh komputer lalu berdasarkan domain dan perakitan. Data hanya dapat diakses dalam konteks aplikasi yang sama dan hanya ketika dijalankan pada komputer yang sama. Ini berguna ketika rakitan pihak ketiga ingin menyimpan penyimpanan data privat. |
DomainIsolationByRoamingUser | 80 | Penyimpanan diisolasi terlebih dahulu oleh pengguna lalu berdasarkan domain dan perakitan. Penyimpanan akan menjelajah jika roaming data pengguna Windows diaktifkan. Data hanya dapat diakses dalam konteks aplikasi yang sama dan hanya ketika dijalankan oleh pengguna yang sama. Ini berguna ketika rakitan pihak ketiga ingin menyimpan penyimpanan data privat. |
DomainIsolationByUser | 16 | Penyimpanan diisolasi terlebih dahulu oleh pengguna lalu berdasarkan domain dan perakitan. Penyimpanan juga diisolasi oleh komputer. Data hanya dapat diakses dalam konteks aplikasi yang sama dan hanya ketika dijalankan oleh pengguna yang sama. Ini berguna ketika rakitan pihak ketiga ingin menyimpan penyimpanan data privat. |
None | 0 | Penggunaan penyimpanan terisolasi tidak diperbolehkan. |
UnrestrictedIsolatedStorage | 240 | Penggunaan penyimpanan terisolasi diizinkan tanpa batasan. Kode memiliki akses penuh ke bagian mana pun dari penyimpanan pengguna, terlepas dari identitas domain atau perakitan. Penggunaan penyimpanan terisolasi ini mencakup kemampuan untuk menghitung konten penyimpanan data penyimpanan yang terisolasi. |
Contoh
Contoh ini menunjukkan cara memberi tahu CLR bahwa kode dalam perakitan ini memerlukan IsolatedStoragePermission dan juga menunjukkan cara menulis dan membaca dari penyimpanan yang terisolasi.
using namespace System;
using namespace System::Security;
using namespace System::Security::Permissions;
using namespace System::IO::IsolatedStorage;
using namespace System::IO;
static void WriteIsolatedStorage()
{
try
{
// Attempt to create a storage file that is isolated by
// user and assembly. IsolatedStorageFilePermission
// granted to the attribute at the top of this file
// allows CLR to load this assembly and execution of this
// statement.
Stream^ fileCreateStream = gcnew
IsolatedStorageFileStream(
"AssemblyData",
FileMode::Create,
IsolatedStorageFile::GetUserStoreForAssembly());
StreamWriter^ streamWriter = gcnew StreamWriter(
fileCreateStream);
try
{
// Write some data out to the isolated file.
streamWriter->Write("This is some test data.");
streamWriter->Close();
}
finally
{
delete fileCreateStream;
delete streamWriter;
}
}
catch (IOException^ ex)
{
Console::WriteLine(ex->Message);
}
try
{
Stream^ fileOpenStream =
gcnew IsolatedStorageFileStream(
"AssemblyData",
FileMode::Open,
IsolatedStorageFile::GetUserStoreForAssembly());
// Attempt to open the file that was previously created.
StreamReader^ streamReader = gcnew StreamReader(
fileOpenStream);
try
{
// Read the data from the file and display it.
Console::WriteLine(streamReader->ReadLine());
streamReader->Close();
}
finally
{
delete fileOpenStream;
delete streamReader;
}
}
catch (FileNotFoundException^ ex)
{
Console::WriteLine(ex->Message);
}
catch (IOException^ ex)
{
Console::WriteLine(ex->Message);
}
}
// Notify the CLR to only grant IsolatedStorageFilePermission to called methods.
// This restricts the called methods to working only with storage files that are isolated
// by user and assembly.
[IsolatedStorageFilePermission(SecurityAction::PermitOnly, UsageAllowed = IsolatedStorageContainment::AssemblyIsolationByUser)]
int main()
{
WriteIsolatedStorage();
}
// This code produces the following output.
//
// This is some test data.
using System;
using System.Security.Permissions;
using System.IO.IsolatedStorage;
using System.IO;
// Notify the CLR to only grant IsolatedStorageFilePermission to called methods.
// This restricts the called methods to working only with storage files that are isolated
// by user and assembly.
[IsolatedStorageFilePermission(SecurityAction.PermitOnly, UsageAllowed = IsolatedStorageContainment.AssemblyIsolationByUser)]
public sealed class App
{
static void Main()
{
WriteIsolatedStorage();
}
private static void WriteIsolatedStorage()
{
// Attempt to create a storage file that is isolated by user and assembly.
// IsolatedStorageFilePermission granted to the attribute at the top of this file
// allows CLR to load this assembly and execution of this statement.
using (Stream s = new IsolatedStorageFileStream("AssemblyData", FileMode.Create, IsolatedStorageFile.GetUserStoreForAssembly()))
{
// Write some data out to the isolated file.
using (StreamWriter sw = new StreamWriter(s))
{
sw.Write("This is some test data.");
}
}
// Attempt to open the file that was previously created.
using (Stream s = new IsolatedStorageFileStream("AssemblyData", FileMode.Open, IsolatedStorageFile.GetUserStoreForAssembly()))
{
// Read the data from the file and display it.
using (StreamReader sr = new StreamReader(s))
{
Console.WriteLine(sr.ReadLine());
}
}
}
}
// This code produces the following output.
//
// Some test data.
Option Strict On
Imports System.Security.Permissions
Imports System.IO.IsolatedStorage
Imports System.IO
' Notify the CLR to only grant IsolatedStorageFilePermission to called methods.
' This restricts the called methods to working only with storage files that are isolated
' by user and assembly.
<IsolatedStorageFilePermission(SecurityAction.PermitOnly, UsageAllowed:=IsolatedStorageContainment.AssemblyIsolationByUser)> _
Public NotInheritable Class App
Shared Sub Main()
WriteIsolatedStorage()
End Sub
Shared Sub WriteIsolatedStorage()
' Attempt to create a storage file that is isolated by user and assembly.
' IsolatedStorageFilePermission granted to the attribute at the top of this file
' allows CLR to load this assembly and execution of this statement.
Dim s As New IsolatedStorageFileStream("AssemblyData", FileMode.Create, IsolatedStorageFile.GetUserStoreForAssembly())
Try
' Write some data out to the isolated file.
Dim sw As New StreamWriter(s)
Try
sw.Write("This is some test data.")
Finally
sw.Dispose()
End Try
Finally
s.Dispose()
End Try
' Attempt to open the file that was previously created.
Dim t As New IsolatedStorageFileStream("AssemblyData", FileMode.Open, IsolatedStorageFile.GetUserStoreForAssembly())
Try
' Read the data from the file and display it.
Dim sr As New StreamReader(t)
Try
Console.WriteLine(sr.ReadLine())
Finally
sr.Dispose()
End Try
Finally
t.Dispose()
End Try
End Sub
End Class
' This code produces the following output.
'
' Some test data.
Keterangan
Perhatian
Keamanan Akses Kode (CAS) tidak digunakan lagi di semua versi .NET Framework dan .NET. Versi terbaru .NET tidak mematuhi anotasi CAS dan menghasilkan kesalahan jika API terkait CAS digunakan. Pengembang harus mencari cara alternatif untuk menyelesaikan tugas keamanan.
Penyimpanan terisolasi menggunakan bukti untuk menentukan area penyimpanan unik untuk digunakan oleh aplikasi atau komponen. Identitas perakitan secara unik menentukan akar sistem file virtual untuk digunakan oleh perakitan tersebut. Dengan demikian, daripada banyak aplikasi dan komponen yang berbagi sumber daya umum seperti sistem file atau registri, masing-masing memiliki area file sendiri yang secara inheren ditetapkan untuk itu.
Empat cakupan isolasi dasar digunakan saat menetapkan penyimpanan terisolasi:
User
- Kode selalu dilingkup sesuai dengan pengguna saat ini. Rakitan yang sama akan menerima penyimpanan yang berbeda saat dijalankan oleh pengguna yang berbeda.Machine
- Kode selalu dilingkup sesuai dengan mesin. Rakitan yang sama akan menerima penyimpanan yang sama saat dijalankan oleh pengguna yang berbeda pada komputer yang sama.Assembly
- Kode diidentifikasi secara kriptografis dengan nama yang kuat (misalnya, Microsoft.Office.* atau Microsoft.Office.Word), oleh penerbit (berdasarkan kunci publik), dengan URL (misalnya,http://www.fourthcoffee.com/process/grind.htm
), menurut situs, atau berdasarkan zona.Domain
- Kode diidentifikasi berdasarkan bukti yang terkait dengan domain aplikasi. Identitas aplikasi web berasal dari URL situs, atau oleh URL, situs, atau zona halaman Web. Identitas kode lokal didasarkan pada jalur direktori aplikasi.
Untuk definisi URL, situs, dan zona, lihat UrlIdentityPermission, SiteIdentityPermission, dan ZoneIdentityPermission.
Identitas ini dikelompokkan bersama-sama, dalam hal ini identitas diterapkan satu demi satu sampai penyimpanan terisolasi yang diinginkan dibuat. Pengelompokan yang valid adalah User+Assembly dan User+Assembly+Domain. Pengelompokan identitas ini berguna dalam banyak aplikasi yang berbeda.
Jika data disimpan oleh domain, pengguna, dan assembly, data bersifat privat dalam satu-satunya kode dalam perakitan tersebut yang dapat mengakses data. Penyimpanan data juga diisolasi oleh aplikasi tempatnya berjalan, sehingga perakitan tidak mewakili potensi kebocoran dengan mengekspos data ke aplikasi lain.
Isolasi oleh assembly dan pengguna dapat digunakan untuk data pengguna yang berlaku di beberapa aplikasi; misalnya, informasi lisensi, atau informasi pribadi pengguna (nama, kredensial autentikasi, dan sebagainya) yang independen dari aplikasi.
IsolatedStorageContainment mengekspos bendera yang menentukan apakah aplikasi diizinkan untuk menggunakan penyimpanan terisolasi dan, jika demikian, kombinasi identitas mana yang diizinkan untuk menggunakannya. Ini juga menentukan apakah aplikasi diizinkan untuk menyimpan informasi di lokasi yang dapat menjelajah dengan pengguna (Profil Pengguna Roaming Windows atau Pengalihan Folder harus dikonfigurasi).