モジュール java.base
パッケージ java.net

クラス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名によるホストの指定では、ワイルドカード「*」を1つだけ使うことができます。 含まれる場合、"*.example.com"のように左端に位置する必要があります。

IPv6referenceの形式は、「RFC 2732: Format for Literal IPv6 Addresses in URLs」で指定されている形式に従います。

    ipv6reference = "[" IPv6address "]"
たとえば、次のようにSocketPermissionインスタンスを構築できます。
    String hostAddress = inetaddress.getHostAddress();
    if (inetaddress instanceof Inet6Address) {
        sp = new SocketPermission("[" + hostAddress + "]:" + port, action);
    } else {
        sp = new SocketPermission(hostAddress + ":" + port, action);
    }
 
or
    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("foo.example.com:7777", "connect,accept");
 
は、コードによっては、foo.example.com上のポート7777に接続し、そのポート上の接続を受け入れることができます。

同様に、

   p2 = new SocketPermission("localhost:1024-", "accept,connect,listen");
 
あるコードに対して上のアクセス権が認められた場合、そのコードは、ローカル・ホスト上の1024から65535のポートに対して、接続の受け入れ、接続、待機を行うことを許可されます。

ノート: リモート・ホストへの接続要求を受け付けるためのアクセス権やリモート・ホストへ接続するためのアクセス権をコードに与えると、悪意のあるコードが、そのようなアクセス権がなければそのデータにアクセスできないホスト間で、機密データをより簡単に転送および共有できるようになるため危険です。

導入されたバージョン:
1.2
外部仕様
関連項目: