SocketPermission Klasa
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Przestroga
Code Access Security is not supported or honored by the runtime.
Kontroluje prawa do nawiązywania lub akceptowania połączeń na adresie transportu.
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
- Dziedziczenie
- Atrybuty
- Implementuje
Przykłady
W poniższym przykładzie pokazano, jak używać SocketPermission klasy do ustawiania, zmieniania i wymuszania różnych ograniczeń dostępu do gniazd.
// 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
Uwagi
Przestroga
Zabezpieczenia dostępu kodu (CAS) zostały uznane za przestarzałe we wszystkich wersjach programu .NET Framework i .NET. Najnowsze wersje platformy .NET nie honorują adnotacji CAS i generują błędy, jeśli są używane interfejsy API związane z usługą CAS. Deweloperzy powinni szukać alternatywnych sposobów wykonywania zadań zabezpieczeń.
SocketPermission wystąpienia kontrolują uprawnienia do akceptowania połączeń lub inicjowania Socket połączeń. Można Socket ustanowić uprawnienie dla nazwy hosta lub adresu IP, numeru portu i protokołu transportowego.
Uwaga
Unikaj tworzenia uprawnień gniazda przy użyciu nazw hostów, ponieważ te nazwy muszą być rozpoznawane jako adresy IP i może to spowodować zablokowanie stosu.
Konstruktory
SocketPermission(NetworkAccess, TransportType, String, Int32) |
Przestarzałe.
Inicjuje SocketPermission nowe wystąpienie klasy dla danego adresu transportu z określonym uprawnieniem. |
SocketPermission(PermissionState) |
Przestarzałe.
Inicjuje SocketPermission nowe wystąpienie klasy, które umożliwia nieograniczony dostęp do obiektu lub nie zezwala na Socket dostęp do obiektu Socket. |
Pola
AllPorts |
Przestarzałe.
Definiuje stałą, która reprezentuje wszystkie porty. |
Właściwości
AcceptList |
Przestarzałe.
Pobiera listę EndpointPermission wystąpień, które identyfikują punkty końcowe, które można zaakceptować w ramach tego wystąpienia uprawnień. |
ConnectList |
Przestarzałe.
Pobiera listę EndpointPermission wystąpień, które identyfikują punkty końcowe, z którymi można nawiązać połączenie w ramach tego wystąpienia uprawnień. |
Metody
AddPermission(NetworkAccess, TransportType, String, Int32) |
Przestarzałe.
Dodaje uprawnienie do zestawu uprawnień dla adresu transportu. |
Assert() |
Przestarzałe.
Deklaruje, że kod wywołujący może uzyskać dostęp do zasobu chronionego przez żądanie uprawnień za pośrednictwem kodu, który wywołuje tę metodę, nawet jeśli obiekty wywołujące wyższe w stosie nie otrzymały uprawnień dostępu do zasobu. Za pomocą polecenia Assert() można tworzyć problemy z zabezpieczeniami. (Odziedziczone po CodeAccessPermission) |
Copy() |
Przestarzałe.
Tworzy kopię SocketPermission wystąpienia. |
Demand() |
Przestarzałe.
Wymusza w SecurityException czasie wykonywania, jeśli wszystkie elementy wywołujące wyższe w stosie wywołań nie otrzymały uprawnienia określonego przez bieżące wystąpienie. (Odziedziczone po CodeAccessPermission) |
Deny() |
Przestarzałe.
Przestarzałe.
Zapobiega wywoływaniom wyższym w stosie wywołań przy użyciu kodu, który wywołuje tę metodę w celu uzyskania dostępu do zasobu określonego przez bieżące wystąpienie. (Odziedziczone po CodeAccessPermission) |
Equals(Object) |
Przestarzałe.
Określa, czy określony CodeAccessPermission obiekt jest równy bieżącemu CodeAccessPermission. (Odziedziczone po CodeAccessPermission) |
FromXml(SecurityElement) |
Przestarzałe.
Rekonstruuje SocketPermission wystąpienie kodowania XML. |
GetHashCode() |
Przestarzałe.
Pobiera kod skrótu CodeAccessPermission dla obiektu, który jest odpowiedni do użycia w algorytmach tworzenia skrótów i strukturach danych, takich jak tabela skrótów. (Odziedziczone po CodeAccessPermission) |
GetType() |
Przestarzałe.
Type Pobiera wartość bieżącego wystąpienia. (Odziedziczone po Object) |
Intersect(IPermission) |
Przestarzałe.
Zwraca logiczne przecięcie między dwoma SocketPermission wystąpieniami. |
IsSubsetOf(IPermission) |
Przestarzałe.
Określa, czy bieżące uprawnienie jest podzbiorem określonego uprawnienia. |
IsUnrestricted() |
Przestarzałe.
Sprawdza ogólny stan uprawnień obiektu. |
MemberwiseClone() |
Przestarzałe.
Tworzy płytkią kopię bieżącego Objectelementu . (Odziedziczone po Object) |
PermitOnly() |
Przestarzałe.
Zapobiega wywoływaniom wyższym w stosie wywołań przy użyciu kodu, który wywołuje tę metodę w celu uzyskania dostępu do wszystkich zasobów z wyjątkiem zasobu określonego przez bieżące wystąpienie. (Odziedziczone po CodeAccessPermission) |
ToString() |
Przestarzałe.
Tworzy i zwraca ciąg reprezentujący bieżący obiekt uprawnień. (Odziedziczone po CodeAccessPermission) |
ToXml() |
Przestarzałe.
Tworzy kodowanie SocketPermission XML wystąpienia i jego bieżącego stanu. |
Union(IPermission) |
Przestarzałe.
Zwraca unię logiczną między dwoma SocketPermission wystąpieniami. |