Spec-Zone.ru › OpenJDK 8

Класс SecurityPermission

  • java.lang.Object
    • java.security.Permission
      • java.security.BasicPermission
        • java.security.SecurityPermission
Все реализуемые интерфейсы:
Serializable, Guard

public final class SecurityPermission
extends BasicPermission

Этот класс предназначен для разрешений безопасности. SecurityPermission содержит имя (также называемое «именем цели»), но не список действий; у вас есть разрешение на указанное имя или нет.

Имя цели — это имя параметра конфигурации безопасности (см. ниже). В настоящее время объект SecurityPermission используется для защиты доступа к объектам Policy, Security, Provider, Signer и Identity.

В следующей таблице перечислены все возможные имена целей SecurityPermission, и для каждого из них приведено описание того, что разрешает разрешение, и обсуждение рисков предоставления коду этого разрешения.

Имя целевого разрешения Что разрешает разрешение Риски предоставления этого разрешения
createAccessControlContext Создание AccessControlContext Это позволяет кому-то создать AccessControlContext с DomainCombiner. Необходимо проявлять особую осторожность при предоставлении этого разрешения. Злонамеренный код может создать DomainCombiner, который расширяет набор разрешений, предоставленных коду, и даже предоставляет коду AllPermission.
getDomainCombiner Получение DomainCombiner AccessControlContext Это позволяет кому-то получить DomainCombiner AccessControlContext. Поскольку DomainCombiners могут содержать конфиденциальную информацию, это потенциально может привести к утечке конфиденциальности.
getPolicy Получение политики безопасности системы (в частности, текущего установленного объекта Policy) Это позволяет кому-то запросить политику через getPermissions вызов, который раскрывает, какие разрешения будут предоставлены данному CodeSource. Хотя раскрытие политики не компрометирует безопасность системы, это предоставляет вредоносному коду дополнительную информацию, которую он может использовать для более точного проведения атаки. Не стоит раскрывать больше информации, чем необходимо.
setPolicy Установка политики безопасности системы (в частности, объекта Policy) Предоставление этого разрешения чрезвычайно опасно, так как вредоносный код может предоставить себе все необходимые разрешения для успешной атаки на систему.
createPolicy.{policy type} Получение экземпляра реализации Policy от поставщика Предоставление этого разрешения позволяет коду получить объект Policy. Злонамеренный код может запросить объект Policy, чтобы определить, какие разрешения были предоставлены коду, кроме него самого.
getProperty.{key} Получение свойства безопасности с указанным ключом В зависимости от конкретного ключа, для которого было предоставлено разрешение, код может получить доступ к списку поставщиков безопасности, а также к расположению политики безопасности системы и пользователя. Хотя раскрытие этой информации не компрометирует безопасность системы, это предоставляет вредоносному коду дополнительную информацию, которую он может использовать для более точного проведения атаки.
setProperty.{key} Установка свойства безопасности с указанным ключом Это может включать установку поставщика безопасности или определение расположения политики безопасности системы. Злонамеренный код, имеющий разрешение на установку нового поставщика безопасности, может установить недобросовестного поставщика, который крадёт конфиденциальную информацию, такую как криптографические закрытые ключи. Кроме того, вредоносный код с разрешением на установку расположения политики безопасности системы может указать на политику безопасности, которая предоставляет злоумышленнику все необходимые разрешения для успешной атаки на систему.
insertProvider Добавление нового поставщика Это позволило бы кому-то ввести, возможно, вредоносного поставщика (например, такого, который раскрывает переданные ему закрытые ключи) в качестве поставщика с наивысшим приоритетом. Это было бы возможно, потому что объект Security (который управляет установленными поставщиками) в настоящее время не проверяет целостность или подлинность поставщика перед его подключением. Разрешение «insertProvider» включает в себя разрешение «insertProvider.{provider name» (см. раздел ниже для получения дополнительной информации).
removeProvider.{provider name} Удаление указанного поставщика Это может изменить поведение или отключить выполнение других частей программы. Если программа впоследствии запросит поставщика, который был удален, выполнение может завершиться ошибкой. Кроме того, если удалённый поставщик не запрашивается остальной частью программы, но он обычно является выбранным поставщиком, когда запрашивается криптографическая служба (из-за его предыдущего порядка в списке поставщиков), вместо него будет выбран другой поставщик, или подходящий поставщик не будет найден, что приведёт к ошибке программы.
clearProviderProperties.{provider name} «Очистка» поставщика, чтобы он больше не содержал свойства, используемые для поиска служб, реализованных поставщиком Это отключает поиск служб, реализованных поставщиком. Таким образом, это может изменить поведение или отключить выполнение других частей программы, которые обычно используют поставщика, как описано в разрешении «removeProvider.{provider name»
putProviderProperty.{provider name} Установка свойств для указанного поставщика Свойства поставщика указывают имя и расположение конкретной службы, реализованной поставщиком. Предоставление этого разрешения позволяет коду заменить спецификацию службы на другую, тем самым указав другую реализацию.
removeProviderProperty.{provider name} Удаление свойств из указанного поставщика Это отключает поиск служб, реализованных поставщиком. Они больше недоступны из-за удаления свойств, определяющих их имена и расположения. Это может изменить поведение или отключить выполнение других частей программы, которые обычно используют поставщика, как описано в разрешении «removeProvider.{provider name»

Следующие разрешения были заменены новыми разрешениями или связаны с устаревшими классами: Identity, IdentityScope, Signer. Использование их не рекомендуется. См. соответствующие классы для получения дополнительной информации.

Имя целевого разрешения Что разрешает разрешение Риски предоставления этого разрешения
insertProvider.{provider name} Добавление нового поставщика с указанным именем Использование этого разрешения не рекомендуется, так как можно обойти ограничения по имени, переопределив метод Provider.getName(). Кроме того, существует эквивалентный уровень риска, связанный с предоставлением коду разрешения на вставку поставщика с определенным именем или любым выбранным им именем. Пользователи должны использовать разрешение «insertProvider» вместо этого.

Это позволило бы кому-то ввести, возможно, вредоносного поставщика (например, такого, который раскрывает переданные ему закрытые ключи) в качестве поставщика с наивысшим приоритетом. Это было бы возможно, потому что объект Security (который управляет установленными поставщиками) в настоящее время не проверяет целостность или подлинность поставщика перед его подключением.

setSystemScope Установка области идентификации системы Это позволило бы злоумышленнику настроить область идентификации системы с сертификатами, которым не следует доверять, тем самым предоставив приложению или коду апплету, подписанному этими сертификатами, привилегии, которые были бы отклонены исходной областью идентификации системы.
setIdentityPublicKey Установка открытого ключа для Identity Если идентификатор отмечен как «доверенный», это позволяет злоумышленнику ввести другой открытый ключ (например, свой собственный), которому не доверяет область идентификации системы, тем самым предоставив приложению или коду апплету, подписанному этим открытым ключом, привилегии, которые были бы отклонены иначе.
setIdentityInfo Установка строки общей информации для Identity Это позволяет злоумышленникам установить общее описание для идентификатора. Это может обмануть приложения, заставив их использовать другой идентификатор, чем предполагалось, или может помешать приложениям найти конкретный идентификатор.
addIdentityCertificate Добавление сертификата для Identity Это позволяет злоумышленникам установить сертификат для открытого ключа идентификатора. Это опасно, так как влияет на доверительные отношения в системе. Этот открытый ключ внезапно становится доверенным для более широкой аудитории, чем это было бы иначе.
removeIdentityCertificate Удаление сертификата для Identity Это позволяет злоумышленникам удалить сертификат для открытого ключа идентификатора. Это опасно, так как влияет на доверительные отношения в системе. Этот открытый ключ внезапно считается менее надёжным, чем это было бы иначе.
printIdentity Просмотр имени принципала и, необязательно, области, в которой он используется, а также является ли он «доверенным» в этой области Область, которая выводится, может быть именем файла, в этом случае она может передавать локальную информацию о системе. Например, вот пример вывода идентификатора с именем «carol», который не является доверенным в базе данных идентификаторов пользователя:
carol[/home/luehe/identitydb.obj][not trusted]
getSignerPrivateKey Получение закрытого ключа Signer Очень опасно разрешать доступ к закрытому ключу; закрытые ключи должны храниться в секрете. В противном случае код может использовать закрытый ключ для подписи различных файлов и утверждать, что подпись исходит от Signer.
setSignerKeyPair Установка пары ключей (открытого и закрытого ключа) для Signer Это позволило бы злоумышленнику заменить пару ключей кого-то другого (цели) возможно менее сильной парой ключей (например, парой ключей меньшего размера). Это также позволило бы злоумышленнику прослушивать зашифрованное общение между целью и её узлами. Узлы цели могут упаковать ключ сеанса шифрования под «новым» открытым ключом цели, что позволит злоумышленнику (который обладает соответствующим закрытым ключом) распаковать ключ сеанса и расшифровать данные связи, зашифрованные под этим ключом сеанса.
См. также:
BasicPermission, Permission, Permissions, PermissionCollection, SecurityManager, Сериализованная форма

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

Конструктор и описание
SecurityPermission(String name)

Создаёт новый SecurityPermission с указанным именем.

SecurityPermission(String name, String actions)

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

Методы

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

equals, getActions, hashCode, implies, newPermissionCollection

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

checkGuard, getName, toString

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

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

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

SecurityPermission

public SecurityPermission(String name)

Создаёт новый SecurityPermission с указанным именем. Имя — символическое имя SecurityPermission. Знак звёздочки (*) может быть в конце имени, после точки или самостоятельно, для обозначения подстановочного символа.

Параметры:
name - имя SecurityPermission
Исключения:
NullPointerException - если name является null.
IllegalArgumentException - если name пустое.

SecurityPermission

public SecurityPermission(String name,
                          String actions)

Создаёт новый объект SecurityPermission с указанным именем. Имя — символическое имя SecurityPermission, а строка actions в настоящее время не используется и должна быть равна null.

Параметры:
name - имя SecurityPermission
actions - должно быть равно null.
Исключения:
NullPointerException - если name является null.
IllegalArgumentException - если name пустое.

© 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