Класс SocketPermission
- Все реализуемые интерфейсы:
-
Serializable,Guard
public final class SocketPermission extends Permission implements Serializable
host = (hostname | IPv4address | iPv6reference) [:portrange]
portrange = portnumber | -portnumber | portnumber-[portnumber]
Хост выражается как имя DNS, как числовой IP-адрес или как «localhost» (для локальной машины). В спецификации хоста имени DNS может быть один раз включён символ подстановки «*». Если он включён, он должен стоять в самом левом положении, как в "*.example.com". Формат IPv6-ссылок должен соответствовать спецификации, указанной в RFC 2732: Формат литеральных адресов IPv6 в URL-адресах:
ipv6reference = "[" IPv6address "]"
Например, вы можете создать экземпляр SocketPermission следующим образом:
String hostAddress = inetaddress.getHostAddress();
if (inetaddress instanceof Inet6Address) {
sp = new SocketPermission("[" + hostAddress + "]:" + port, action);
} else {
sp = new SocketPermission(hostAddress + ":" + port, action);
}
или
String host = url.getHost();
sp = new SocketPermission(host + ":" + port, action);
Также допустима полная нескомпрессированная форма литерального адреса IPv6.
Порт или диапазон портов являются необязательными. Указание порта в формате «N-», где N — номер порта, обозначает все порты с номером N и выше, а указание в формате «-N» — все порты с номером N и ниже. Специальное значение порта 0 относится ко всему динамическому диапазону портов. Это фиксированный диапазон портов, которые система может использовать для выделения динамических портов. Фактический диапазон может зависеть от системы.
Возможные способы подключения к хосту:
accept connect listen resolveДействие «listen» имеет смысл только при использовании с «localhost» и означает возможность привязки к указанному порту. Действие «resolve» подразумевается, когда присутствуют любые другие действия. Действие «resolve» относится к поиску имен/IP-адресов хоста.
Строка действий преобразуется в нижний регистр перед обработкой.
В качестве примера создания и значения SocketPermission, обратите внимание, что если разрешено следующее разрешение:
p1 = new SocketPermission("foo.example.com:7777", "connect,accept");
это разрешает данному коду подключаться к порту 7777 на foo.example.com, и принимать соединения на этом порту. Аналогично, если разрешено следующее разрешение:
p2 = new SocketPermission("localhost:1024-", "accept,connect,listen");
это разрешает данному коду принимать соединения, подключаться или прослушивать любой порт между 1024 и 65535 на локальном хосте. Примечание: Предоставление коду разрешения на принятие или установление соединений с удалёнными хостами может быть небезопасным, поскольку вредоносный код может легче передавать и обмениваться конфиденциальными данными между сторонами, которые в противном случае не имели доступа к данным.
- С:
- 1.2
- Внешние спецификации
- См. также:
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
SocketPermission |
Создаёт новый объект SocketPermission с указанными действиями. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
boolean |
equals |
Проверяет два объекта SocketPermission на равенство. |
String |
getActions() |
Возвращает каноническое строковое представление действий. |
int |
hashCode() |
Возвращает хэш-код для этого объекта. |
boolean |
implies |
Проверяет, подразумевает ли данный объект разрешения сокета указанное разрешение. |
PermissionCollection |
newPermissionCollection() |
Возвращает новый объект PermissionCollection для хранения объектов SocketPermission. |
Методы, объявленные в классе java.security.Permission
checkGuard, getName, toString
Подробное описание конструкторов
SocketPermission
public SocketPermission(String host, String action)
Для указания локальной машины используйте "localhost" в качестве host. Также обратите внимание: пустая строка host ("") эквивалентна "localhost".
Параметр actions содержит список действий, разрешённых для указанного хоста (и порта(ов)), разделённых запятыми. Возможные действия — "connect", "listen", "accept", "resolve" или любое их сочетание. "resolve" автоматически добавляется, когда указаны любое из других трёх действий.
Примеры создания SocketPermission:
nr = new SocketPermission("www.example.com", "connect");
nr = new SocketPermission("www.example.com:80", "connect");
nr = new SocketPermission("*.example.com", "connect");
nr = new SocketPermission("*.edu", "resolve");
nr = new SocketPermission("204.160.241.0", "connect");
nr = new SocketPermission("localhost:1024-65535", "listen");
nr = new SocketPermission("204.160.241.0:1024-65535", "connect");
- Параметры:
-
host— имя хоста или IP-адрес компьютера, необязательно включая двоеточие, за которым следует порт или диапазон портов. -
action— строка действия. - Исключения:
-
NullPointerException— если любой из параметров равен null -
IllegalArgumentException— если форматhostнекорректен или строкаactionпустая, некорректная или содержит действие, отличное от указанных возможных действий
Подробное описание методов
implies
public boolean implies(Permission p)
Более конкретно, этот метод сначала проверяет следующие условия (и возвращает false, если хотя бы одно из них не выполняется):
- p является экземпляром SocketPermission,
- действия p представляют собой надмножество действий этого объекта, и
- диапазон портов p содержится в этом диапазоне портов. Примечание: диапазон портов игнорируется, если p содержит только действие 'resolve'.
implies проверяет каждое из следующих условий, в порядке следования, и для каждого возвращает true, если указанное условие выполняется: - Если этот объект был инициализирован с одним IP-адресом, и один из IP-адресов p равен IP-адресу этого объекта.
- Если этот объект представляет собой универсальный домен (например, *.example.com), и каноническое имя p (имя без предшествующего *) заканчивается каноническим именем хоста этого объекта. Например, *.example.com подразумевает *.foo.example.com.
- Если этот объект не был инициализирован с одним IP-адресом, и один из IP-адресов этого объекта равен одному из IP-адресов p.
- Если каноническое имя равно каноническому имени p.
implies возвращает false.- Определено в:
-
impliesв классеPermission - Параметры:
-
p— разрешение для проверки. - Возвращает:
- true, если указанное разрешение подразумевается этим объектом, false — в противном случае.
equals
public boolean equals(Object obj)
- Определено в:
-
equalsв классеPermission - Параметры:
-
obj— объект для проверки на равенство с этим объектом. - Возвращает:
- true, если obj является SocketPermission и имеет тот же хост, диапазон портов и действия, что и этот объект SocketPermission. Однако диапазон портов будет проигнорирован в сравнении, если obj содержит только действие 'resolve'.
- См. также:
hashCode
public int hashCode()
- Определено в:
-
hashCodeв классеPermission - Возвращает:
- значение хэш-кода для этого объекта.
- См. также:
getActions
public String getActions()
- Определено в:
-
getActionsв классеPermission - Возвращает:
- каноническое строковое представление действий.
newPermissionCollection
public PermissionCollection newPermissionCollection()
Объекты SocketPermission должны храниться таким образом, чтобы их можно было вставлять в коллекцию в любом порядке, но это также позволяет методу PermissionCollection implies реализовываться эффективным (и последовательным) образом.
- Переопределяет:
-
newPermissionCollectionв классеPermission - Возвращает:
- новый объект PermissionCollection, подходящий для хранения SocketPermission.
© 1993, 2023, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/net/SocketPermission.html