Spec-Zone.ru › OpenJDK 8

Класс SocketPermission

  • java.lang.Object
    • java.security.Permission
      • java.net.SocketPermission
Все реализованные интерфейсы:
Serializable, Guard

public final class SocketPermission
extends Permission
implements Serializable

Этот класс представляет доступ к сети через сокеты. SocketPermission состоит из спецификации хоста и набора «действий», определяющих способы подключения к этому хосту. Хост задается как

host = (hostname | IPv4address | iPv6reference) [:portrange]
    portrange = portnumber | -portnumber | portnumber-[portnumber]
Хост выражается как имя DNS, как числовой IP-адрес или как «localhost» (для локальной машины). В спецификации имени хоста DNS может быть включена одна запись подстановки «*». Если она включена, она должна быть в самом левом положении, как в "*.sun.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.

Строка действий преобразуется в нижний регистр перед обработкой.

В качестве примера создания и значения SocketPermissions обратите внимание, что если предоставлено следующее разрешение:

p1 = new SocketPermission("puffin.eng.sun.com:7777", "connect,accept");
, это разрешение позволяет этому коду подключаться к порту 7777 на puffin.eng.sun.com, и принимать подключения на этом порту.

Аналогично, если предоставлено следующее разрешение:

p2 = new SocketPermission("localhost:1024-", "accept,connect,listen");
, это разрешение позволяет этому коду принимать подключения на, подключаться к или прослушивать любой порт между 1024 и 65535 на локальном хосте.

Примечание: Предоставление коду разрешения на прием или установление соединений с удалёнными хостами может быть небезопасно, так как вредоносный код может легче передавать и обмениваться конфиденциальными данными между сторонами, у которых иначе не было бы доступа к данным.

См. также:
Permissions, SocketPermission

Конструкторы

Конструктор и описание
SocketPermission(String host, String action)

Создаёт новый объект SocketPermission с указанными действиями.

Методы

Модификатор и тип Метод и описание
boolean equals(Object obj)

Проверяет два объекта SocketPermission на равенство.

String getActions()

Возвращает каноническое строковое представление действий.

int hashCode()

Возвращает хеш-код для этого объекта.

boolean implies(Permission p)

Проверяет, подразумевает ли этот объект разрешения сокета указанное разрешение.

PermissionCollection newPermissionCollection()

Возвращает новый объект PermissionCollection для хранения объектов SocketPermission.

Методы, унаследованные от класса java.security.Permission

checkGuard, getName, toString

Методы, унаследованные от класса java.lang.Object

clone, finalize, getClass, notify, notifyAll, wait, wait, wait

Конструкторы

SocketPermission

public SocketPermission(String host,
                        String action)

Создаёт новый объект SocketPermission с указанными действиями. Хост выражается как имя DNS или как числовой IP-адрес. Необязательно, может быть указан порт или диапазон портов (разделенные двоеточием от имени DNS или IP-адреса).

Для указания локальной машины используйте «localhost» в качестве хоста. Также обратите внимание: пустая строка хоста («») эквивалентна «localhost».

Параметр actions содержит список действий, разделённых запятыми, предоставленных для указанного хоста (и порта(ов)). Возможные действия — «connect», «listen», «accept», «resolve» или любая комбинация из них. «resolve» автоматически добавляется, когда указано любое из трёх других.

Примеры создания SocketPermission:

nr = new SocketPermission("www.catalog.com", "connect");
    nr = new SocketPermission("www.sun.com:80", "connect");
    nr = new SocketPermission("*.sun.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 — строка действий.

Методы

implies

public boolean implies(Permission p)

Проверяет, подразумевает ли этот объект разрешения сокета указанное разрешение.

Более конкретно, этот метод сначала проверяет, являются ли следующие условия истинными (и возвращает false, если хоть одно из них ложно):

  • p является экземпляром SocketPermission,
  • действия p являются надмножеством действий этого объекта, и
  • диапазон портов p включён в этот диапазон портов. Примечание: диапазон портов игнорируется, когда p содержит только действие 'resolve'.
Затем implies проверяет каждое из следующих условий, в порядке, и для каждого возвращает true, если указанное условие истинно:
  • Если этот объект был инициализирован одним IP-адресом, и один из IP-адресов p равен IP-адресу этого объекта.
  • Если этот объект представляет собой домен с подстановкой (например, *.sun.com), и каноническое имя p (имя без любого предшествующего *) оканчивается каноническим именем хоста этого объекта. Например, *.sun.com подразумевает *.eng.sun.com.
  • Если этот объект не был инициализирован одним IP-адресом, и один из IP-адресов этого объекта равен одному из IP-адресов p.
  • Если каноническое имя равно каноническому имени p.
Если ни одно из вышеперечисленных условий не выполняется, implies возвращает false.
Указано в:
implies в классе Permission
Параметры:
p — разрешение для проверки.
Возвращает:
true, если указанное разрешение подразумевается этим объектом, false — в противном случае.

equals

public boolean equals(Object obj)

Проверяет два объекта SocketPermission на равенство.

Указано в:
equals в классе Permission
Параметры:
obj — объект для проверки на равенство с этим объектом.
Возвращает:
true, если obj является SocketPermission и имеет тот же хост, диапазон портов и действия, что и этот объект SocketPermission. Однако диапазон портов будет проигнорирован при сравнении, если obj содержит только действие 'resolve'.
См. также:
Object.hashCode(), HashMap

hashCode

public int hashCode()

Возвращает хеш-код для этого объекта.

Указано в:
hashCode в классе Permission
Возвращает:
хеш-код для этого объекта.
См. также:
Object.equals(java.lang.Object), System.identityHashCode(java.lang.Object)

getActions

public String getActions()

Возвращает каноническое строковое представление действий. Всегда возвращает присутствующие действия в следующем порядке: connect, listen, accept, resolve.

Указано в:
getActions в классе Permission
Возвращает:
каноническое строковое представление действий.

newPermissionCollection

public PermissionCollection newPermissionCollection()

Возвращает новый объект PermissionCollection для хранения объектов SocketPermission.

Объекты SocketPermission должны храниться таким образом, чтобы их можно было вставлять в коллекцию в любом порядке, но это также позволяет реализовать метод PermissionCollection implies эффективным (и согласованным) образом.

Переопределяет:
newPermissionCollection в классе Permission
Возвращает:
новый объект PermissionCollection, подходящий для хранения SocketPermission.

© 1993, 2020, 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.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API