SocketPermission Kelas
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.
Mengontrol hak untuk membuat atau menerima koneksi pada alamat transportasi.
public ref class SocketPermission sealed : System::Security::CodeAccessPermission, System::Security::Permissions::IUnrestrictedPermission
[System.Obsolete("Code Access Security is not supported or honored by the runtime.", DiagnosticId="SYSLIB0003", UrlFormat="https://aka.ms/dotnet-warnings/{0}")]
public sealed class SocketPermission : System.Security.CodeAccessPermission, System.Security.Permissions.IUnrestrictedPermission
[System.Serializable]
public sealed class SocketPermission : System.Security.CodeAccessPermission, System.Security.Permissions.IUnrestrictedPermission
public sealed class SocketPermission : System.Security.CodeAccessPermission, System.Security.Permissions.IUnrestrictedPermission
[<System.Obsolete("Code Access Security is not supported or honored by the runtime.", DiagnosticId="SYSLIB0003", UrlFormat="https://aka.ms/dotnet-warnings/{0}")>]
type SocketPermission = class
inherit CodeAccessPermission
interface IUnrestrictedPermission
[<System.Serializable>]
type SocketPermission = class
inherit CodeAccessPermission
interface IUnrestrictedPermission
type SocketPermission = class
inherit CodeAccessPermission
interface IUnrestrictedPermission
Public NotInheritable Class SocketPermission
Inherits CodeAccessPermission
Implements IUnrestrictedPermission
- Warisan
- Atribut
- Penerapan
Contoh
Contoh berikut menunjukkan cara menggunakan SocketPermission kelas untuk mengatur, mengubah, dan menerapkan berbagai pembatasan akses soket.
// Creates a SocketPermission restricting access to and from all URIs.
SocketPermission^ mySocketPermission1 = gcnew SocketPermission( PermissionState::None );
// The socket to which this permission will apply will allow connections from www.contoso.com.
mySocketPermission1->AddPermission( NetworkAccess::Accept, TransportType::Tcp, "www.contoso.com", 11000 );
// Creates a SocketPermission which will allow the target Socket to connect with www.southridgevideo.com.
SocketPermission^ mySocketPermission2 = gcnew SocketPermission( NetworkAccess::Connect,TransportType::Tcp, "www.southridgevideo.com",11002 );
// Creates a SocketPermission from the union of two SocketPermissions.
SocketPermission^ mySocketPermissionUnion =
(SocketPermission^)( mySocketPermission1->Union( mySocketPermission2 ) );
// Checks to see if the union was successfully created by using the IsSubsetOf method.
if ( mySocketPermission1->IsSubsetOf( mySocketPermissionUnion ) &&
mySocketPermission2->IsSubsetOf( mySocketPermissionUnion ) )
{
Console::WriteLine( "This union contains permissions from both mySocketPermission1 and mySocketPermission2" );
// Prints the allowable accept URIs to the console.
Console::WriteLine( "This union accepts connections on :" );
IEnumerator^ myEnumerator = mySocketPermissionUnion->AcceptList;
while ( myEnumerator->MoveNext() )
{
Console::WriteLine( safe_cast<EndpointPermission^>( myEnumerator->Current )->ToString() );
}
// Prints the allowable connect URIs to the console.
Console::WriteLine( "This union permits connections to :" );
myEnumerator = mySocketPermissionUnion->ConnectList;
while ( myEnumerator->MoveNext() )
{
Console::WriteLine( safe_cast<EndpointPermission^>( myEnumerator->Current )->ToString() );
}
}
// Creates a SocketPermission from the intersect of two SocketPermissions.
SocketPermission^ mySocketPermissionIntersect =
(SocketPermission^)( mySocketPermission1->Intersect( mySocketPermissionUnion ) );
// mySocketPermissionIntersect should now contain the permissions of mySocketPermission1.
if ( mySocketPermission1->IsSubsetOf( mySocketPermissionIntersect ) )
{
Console::WriteLine( "This is expected" );
}
// mySocketPermissionIntersect should not contain the permissios of mySocketPermission2.
if ( mySocketPermission2->IsSubsetOf( mySocketPermissionIntersect ) )
{
Console::WriteLine( "This should not print" );
}
// Creates a copy of the intersect SocketPermission.
SocketPermission^ mySocketPermissionIntersectCopy =
(SocketPermission^)( mySocketPermissionIntersect->Copy() );
if ( mySocketPermissionIntersectCopy->Equals( mySocketPermissionIntersect ) )
{
Console::WriteLine( "Copy successfull" );
}
// Converts a SocketPermission to XML format and then immediately converts it back to a SocketPermission.
mySocketPermission1->FromXml( mySocketPermission1->ToXml() );
// Checks to see if permission for this socket resource is unrestricted. If it is, then there is no need to
// demand that permissions be enforced.
if ( mySocketPermissionUnion->IsUnrestricted() )
{
//Do nothing. There are no restrictions.
}
else
{
// Enforces the permissions found in mySocketPermissionUnion on any Socket Resources used below this statement.
mySocketPermissionUnion->Demand();
}
IPHostEntry^ myIpHostEntry = Dns::Resolve( "www.contoso.com" );
IPEndPoint^ myLocalEndPoint = gcnew IPEndPoint( myIpHostEntry->AddressList[ 0 ], 11000 );
Socket^ s = gcnew Socket( myLocalEndPoint->Address->AddressFamily,
SocketType::Stream,
ProtocolType::Tcp );
try
{
s->Connect( myLocalEndPoint );
}
catch ( Exception^ e )
{
Console::Write( "Exception Thrown: " );
Console::WriteLine( e->ToString() );
}
// Perform all socket operations in here.
s->Close();
// Creates a SocketPermission restricting access to and from all URIs.
SocketPermission mySocketPermission1 = new SocketPermission(PermissionState.None);
// The socket to which this permission will apply will allow connections from www.contoso.com.
mySocketPermission1.AddPermission(NetworkAccess.Accept, TransportType.Tcp, "www.contoso.com", 11000);
// Creates a SocketPermission which will allow the target Socket to connect with www.southridgevideo.com.
SocketPermission mySocketPermission2 =
new SocketPermission(NetworkAccess.Connect, TransportType.Tcp, "www.southridgevideo.com", 11002);
// Creates a SocketPermission from the union of two SocketPermissions.
SocketPermission mySocketPermissionUnion =
(SocketPermission)mySocketPermission1.Union(mySocketPermission2);
// Checks to see if the union was successfully created by using the IsSubsetOf method.
if (mySocketPermission1.IsSubsetOf(mySocketPermissionUnion) &&
mySocketPermission2.IsSubsetOf(mySocketPermissionUnion)){
Console.WriteLine("This union contains permissions from both mySocketPermission1 and mySocketPermission2");
// Prints the allowable accept URIs to the console.
Console.WriteLine("This union accepts connections on :");
IEnumerator myEnumerator = mySocketPermissionUnion.AcceptList;
while (myEnumerator.MoveNext()) {
Console.WriteLine(((EndpointPermission)myEnumerator.Current).ToString());
}
// Prints the allowable connect URIs to the console.
Console.WriteLine("This union permits connections to :");
myEnumerator = mySocketPermissionUnion.ConnectList;
while (myEnumerator.MoveNext()) {
Console.WriteLine(((EndpointPermission)myEnumerator.Current).ToString());
}
}
// Creates a SocketPermission from the intersect of two SocketPermissions.
SocketPermission mySocketPermissionIntersect =
(SocketPermission)mySocketPermission1.Intersect(mySocketPermissionUnion);
// mySocketPermissionIntersect should now contain the permissions of mySocketPermission1.
if (mySocketPermission1.IsSubsetOf(mySocketPermissionIntersect)){
Console.WriteLine("This is expected");
}
// mySocketPermissionIntersect should not contain the permissios of mySocketPermission2.
if (mySocketPermission2.IsSubsetOf(mySocketPermissionIntersect)){
Console.WriteLine("This should not print");
}
// Creates a copy of the intersect SocketPermission.
SocketPermission mySocketPermissionIntersectCopy =
(SocketPermission)mySocketPermissionIntersect.Copy();
if (mySocketPermissionIntersectCopy.Equals(mySocketPermissionIntersect)){
Console.WriteLine("Copy successfull");
}
// Converts a SocketPermission to XML format and then immediately converts it back to a SocketPermission.
mySocketPermission1.FromXml(mySocketPermission1.ToXml());
// Checks to see if permission for this socket resource is unrestricted. If it is, then there is no need to
// demand that permissions be enforced.
if (mySocketPermissionUnion.IsUnrestricted()){
//Do nothing. There are no restrictions.
}
else{
// Enforces the permissions found in mySocketPermissionUnion on any Socket Resources used below this statement.
mySocketPermissionUnion.Demand();
}
IPHostEntry myIpHostEntry = Dns.Resolve("www.contoso.com");
IPEndPoint myLocalEndPoint = new IPEndPoint(myIpHostEntry.AddressList[0], 11000);
Socket s = new Socket(myLocalEndPoint.Address.AddressFamily,
SocketType.Stream,
ProtocolType.Tcp);
try{
s.Connect(myLocalEndPoint);
}
catch (Exception e){
Console.WriteLine("Exception Thrown: " + e.ToString());
}
// Perform all socket operations in here.
s.Close();
' Creates a SocketPermission restricting access to and from all URIs.
Dim mySocketPermission1 As New SocketPermission(PermissionState.None)
' The socket to which this permission will apply will allow connections from www.contoso.com.
mySocketPermission1.AddPermission(NetworkAccess.Accept, TransportType.Tcp, "www.contoso.com", 11000)
' Creates a SocketPermission which will allow the target Socket to connect with www.southridgevideo.com.
Dim mySocketPermission2 As New SocketPermission(NetworkAccess.Connect, TransportType.Tcp, "www.southridgevideo.com", 11002)
' Creates a SocketPermission from the union of two SocketPermissions.
Dim mySocketPermissionUnion As SocketPermission = CType(mySocketPermission1.Union(mySocketPermission2), SocketPermission)
' Checks to see if the union was successfully created by using the IsSubsetOf method.
If mySocketPermission1.IsSubsetOf(mySocketPermissionUnion) And mySocketPermission2.IsSubsetOf(mySocketPermissionUnion) Then
Console.WriteLine("This union contains permissions from both mySocketPermission1 and mySocketPermission2")
' Prints the allowable accept URIs to the console.
Console.WriteLine("This union accepts connections on :")
Dim myEnumerator As IEnumerator = mySocketPermissionUnion.AcceptList
While myEnumerator.MoveNext()
Console.WriteLine(CType(myEnumerator.Current, EndpointPermission).ToString())
End While
Console.WriteLine("This union establishes connections on : ")
' Prints the allowable connect URIs to the console.
Console.WriteLine("This union permits connections to :")
myEnumerator = mySocketPermissionUnion.ConnectList
While myEnumerator.MoveNext()
Console.WriteLine(CType(myEnumerator.Current, EndpointPermission).ToString())
End While
End If
' Creates a SocketPermission from the intersect of two SocketPermissions.
Dim mySocketPermissionIntersect As SocketPermission = CType(mySocketPermission1.Intersect(mySocketPermissionUnion), SocketPermission)
' mySocketPermissionIntersect should now contain the permissions of mySocketPermission1.
If mySocketPermission1.IsSubsetOf(mySocketPermissionIntersect) Then
Console.WriteLine("This is expected")
End If
' mySocketPermissionIntersect should not contain the permissios of mySocketPermission2.
If mySocketPermission2.IsSubsetOf(mySocketPermissionIntersect) Then
Console.WriteLine("This should not print")
End If
' Creates a copy of the intersect SocketPermission.
Dim mySocketPermissionIntersectCopy As SocketPermission = CType(mySocketPermissionIntersect.Copy(), SocketPermission)
If mySocketPermissionIntersectCopy.Equals(mySocketPermissionIntersect) Then
Console.WriteLine("Copy successfull")
End If
' Converts a SocketPermission to XML format and then immediately converts it back to a SocketPermission.
mySocketPermission1.FromXml(mySocketPermission1.ToXml())
' Checks to see if permission for this socket resource is unrestricted. If it is, then there is no need to
' demand that permissions be enforced.
If mySocketPermissionUnion.IsUnrestricted() Then
'Do nothing. There are no restrictions.
Else
' Enforces the permissions found in mySocketPermissionUnion on any Socket Resources used below this statement.
mySocketPermissionUnion.Demand()
End If
Dim myIpHostEntry As IPHostEntry = Dns.Resolve("www.contoso.com")
Dim myLocalEndPoint As New IPEndPoint(myIpHostEntry.AddressList(0), 11000)
Dim s As New Socket(myLocalEndPoint.Address.AddressFamily, SocketType.Stream, ProtocolType.Tcp)
Try
s.Connect(myLocalEndPoint)
Catch e As Exception
Console.WriteLine(("Exception Thrown: " + e.ToString()))
End Try
' Perform all socket operations in here.
s.Close()
End Sub
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.
SocketPermission instans mengontrol izin untuk menerima koneksi atau memulai Socket koneksi. Izin Socket dapat ditetapkan untuk nama host atau alamat IP, nomor port, dan protokol transportasi.
Catatan
Hindari membuat izin soket menggunakan nama host, karena nama-nama ini harus diselesaikan ke alamat IP, dan ini mungkin memblokir tumpukan.
Konstruktor
SocketPermission(NetworkAccess, TransportType, String, Int32) |
Kedaluwarsa.
Menginisialisasi instans SocketPermission baru kelas untuk alamat transportasi yang diberikan dengan izin yang ditentukan. |
SocketPermission(PermissionState) |
Kedaluwarsa.
Menginisialisasi instans SocketPermission baru kelas yang memungkinkan akses tidak terbatas ke Socket atau melarang akses ke Socket. |
Bidang
AllPorts |
Kedaluwarsa.
Menentukan konstanta yang mewakili semua port. |
Properti
AcceptList |
Kedaluwarsa.
Mendapatkan daftar EndpointPermission instans yang mengidentifikasi titik akhir yang dapat diterima di bawah instans izin ini. |
ConnectList |
Kedaluwarsa.
Mendapatkan daftar EndpointPermission instans yang mengidentifikasi titik akhir yang dapat disambungkan di bawah instans izin ini. |
Metode
AddPermission(NetworkAccess, TransportType, String, Int32) |
Kedaluwarsa.
Menambahkan izin ke sekumpulan izin untuk alamat transportasi. |
Assert() |
Kedaluwarsa.
Menyatakan bahwa kode panggilan dapat mengakses sumber daya yang dilindungi oleh permintaan izin melalui kode yang memanggil metode ini, bahkan jika penelepon yang lebih tinggi di tumpukan belum diberikan izin untuk mengakses sumber daya. Menggunakan Assert() dapat membuat masalah keamanan. (Diperoleh dari CodeAccessPermission) |
Copy() |
Kedaluwarsa.
Membuat salinan SocketPermission instans. |
Demand() |
Kedaluwarsa.
SecurityException Memaksa pada durasi jika semua penelepon yang lebih tinggi dalam tumpukan panggilan belum diberikan izin yang ditentukan oleh instans saat ini. (Diperoleh dari CodeAccessPermission) |
Deny() |
Kedaluwarsa.
Kedaluwarsa.
Mencegah penelepon yang lebih tinggi dalam tumpukan panggilan menggunakan kode yang memanggil metode ini untuk mengakses sumber daya yang ditentukan oleh instans saat ini. (Diperoleh dari CodeAccessPermission) |
Equals(Object) |
Kedaluwarsa.
Menentukan apakah objek yang ditentukan CodeAccessPermission sama dengan objek saat ini CodeAccessPermission. (Diperoleh dari CodeAccessPermission) |
FromXml(SecurityElement) |
Kedaluwarsa.
Rekonstruksi instans SocketPermission untuk pengodean XML. |
GetHashCode() |
Kedaluwarsa.
Mendapatkan kode hash untuk CodeAccessPermission objek yang cocok untuk digunakan dalam algoritma hashing dan struktur data seperti tabel hash. (Diperoleh dari CodeAccessPermission) |
GetType() |
Kedaluwarsa.
Mendapatkan instans Type saat ini. (Diperoleh dari Object) |
Intersect(IPermission) |
Kedaluwarsa.
Mengembalikan persimpangan logis antara dua SocketPermission instans. |
IsSubsetOf(IPermission) |
Kedaluwarsa.
Menentukan apakah izin saat ini adalah subset dari izin yang ditentukan. |
IsUnrestricted() |
Kedaluwarsa.
Memeriksa status izin keseluruhan objek. |
MemberwiseClone() |
Kedaluwarsa.
Membuat salinan dangkal dari yang saat ini Object. (Diperoleh dari Object) |
PermitOnly() |
Kedaluwarsa.
Mencegah penelepon yang lebih tinggi dalam tumpukan panggilan menggunakan kode yang memanggil metode ini untuk mengakses semua sumber daya kecuali untuk sumber daya yang ditentukan oleh instans saat ini. (Diperoleh dari CodeAccessPermission) |
ToString() |
Kedaluwarsa.
Membuat dan mengembalikan representasi string dari objek izin saat ini. (Diperoleh dari CodeAccessPermission) |
ToXml() |
Kedaluwarsa.
Membuat pengodean XML instans SocketPermission dan statusnya saat ini. |
Union(IPermission) |
Kedaluwarsa.
Mengembalikan union logis di antara dua SocketPermission instans. |