Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/mobile
Path: blob/master/src/java.base/share/classes/java/net/NetPermission.java
41152 views
1
/*
2
* Copyright (c) 1997, 2020, Oracle and/or its affiliates. All rights reserved.
3
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4
*
5
* This code is free software; you can redistribute it and/or modify it
6
* under the terms of the GNU General Public License version 2 only, as
7
* published by the Free Software Foundation. Oracle designates this
8
* particular file as subject to the "Classpath" exception as provided
9
* by Oracle in the LICENSE file that accompanied this code.
10
*
11
* This code is distributed in the hope that it will be useful, but WITHOUT
12
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14
* version 2 for more details (a copy is included in the LICENSE file that
15
* accompanied this code).
16
*
17
* You should have received a copy of the GNU General Public License version
18
* 2 along with this work; if not, write to the Free Software Foundation,
19
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20
*
21
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22
* or visit www.oracle.com if you need additional information or have any
23
* questions.
24
*/
25
26
package java.net;
27
28
import java.security.*;
29
import java.util.Enumeration;
30
import java.util.Hashtable;
31
import java.util.StringTokenizer;
32
33
/**
34
* This class is for various network permissions.
35
* A NetPermission contains a name (also referred to as a "target name") but
36
* no actions list; you either have the named permission
37
* or you don't.
38
* <P>
39
* The target name is the name of the network permission (see below). The naming
40
* convention follows the hierarchical property naming convention.
41
* Also, an asterisk
42
* may appear at the end of the name, following a ".", or by itself, to
43
* signify a wildcard match. For example: "foo.*" and "*" signify a wildcard
44
* match, while "*foo" and "a*b" do not.
45
* <P>
46
* The following table lists the standard NetPermission target names,
47
* and for each provides a description of what the permission allows
48
* and a discussion of the risks of granting code the permission.
49
*
50
* <table class="striped">
51
* <caption style="display:none">Permission target name, what the permission allows, and associated risks</caption>
52
* <thead>
53
* <tr>
54
* <th scope="col">Permission Target Name</th>
55
* <th scope="col">What the Permission Allows</th>
56
* <th scope="col">Risks of Allowing this Permission</th>
57
* </tr>
58
* </thead>
59
* <tbody>
60
* <tr>
61
* <th scope="row">allowHttpTrace</th>
62
* <td>The ability to use the HTTP TRACE method in HttpURLConnection.</td>
63
* <td>Malicious code using HTTP TRACE could get access to security sensitive
64
* information in the HTTP headers (such as cookies) that it might not
65
* otherwise have access to.</td>
66
* </tr>
67
*
68
* <tr>
69
* <th scope="row">accessUnixDomainSocket</th>
70
* <td>The ability to accept, bind, connect or get the local address
71
* of a <i>Unix Domain</i> socket.
72
* </td>
73
* <td>Malicious code could connect to local processes using Unix domain sockets
74
* or impersonate local processes, by binding to the same pathnames (assuming they
75
* have the required Operating System permissions.</td>
76
* </tr>
77
*
78
* <tr>
79
* <th scope="row">getCookieHandler</th>
80
* <td>The ability to get the cookie handler that processes highly
81
* security sensitive cookie information for an Http session.</td>
82
* <td>Malicious code can get a cookie handler to obtain access to
83
* highly security sensitive cookie information. Some web servers
84
* use cookies to save user private information such as access
85
* control information, or to track user browsing habit.</td>
86
* </tr>
87
*
88
* <tr>
89
* <th scope="row">getNetworkInformation</th>
90
* <td>The ability to retrieve all information about local network interfaces.</td>
91
* <td>Malicious code can read information about network hardware such as
92
* MAC addresses, which could be used to construct local IPv6 addresses.</td>
93
* </tr>
94
*
95
* <tr>
96
* <th scope="row">getProxySelector</th>
97
* <td>The ability to get the proxy selector used to make decisions
98
* on which proxies to use when making network connections.</td>
99
* <td>Malicious code can get a ProxySelector to discover proxy
100
* hosts and ports on internal networks, which could then become
101
* targets for attack.</td>
102
* </tr>
103
*
104
* <tr>
105
* <th scope="row">getResponseCache</th>
106
* <td>The ability to get the response cache that provides
107
* access to a local response cache.</td>
108
* <td>Malicious code getting access to the local response cache
109
* could access security sensitive information.</td>
110
* </tr>
111
*
112
* <tr>
113
* <th scope="row">requestPasswordAuthentication</th>
114
* <td>The ability
115
* to ask the authenticator registered with the system for
116
* a password</td>
117
* <td>Malicious code may steal this password.</td>
118
* </tr>
119
*
120
* <tr>
121
* <th scope="row">setCookieHandler</th>
122
* <td>The ability to set the cookie handler that processes highly
123
* security sensitive cookie information for an Http session.</td>
124
* <td>Malicious code can set a cookie handler to obtain access to
125
* highly security sensitive cookie information. Some web servers
126
* use cookies to save user private information such as access
127
* control information, or to track user browsing habit.</td>
128
* </tr>
129
*
130
* <tr>
131
* <th scope="row">setDefaultAuthenticator</th>
132
* <td>The ability to set the
133
* way authentication information is retrieved when
134
* a proxy or HTTP server asks for authentication</td>
135
* <td>Malicious
136
* code can set an authenticator that monitors and steals user
137
* authentication input as it retrieves the input from the user.</td>
138
* </tr>
139
*
140
* <tr>
141
* <th scope="row">setProxySelector</th>
142
* <td>The ability to set the proxy selector used to make decisions
143
* on which proxies to use when making network connections.</td>
144
* <td>Malicious code can set a ProxySelector that directs network
145
* traffic to an arbitrary network host.</td>
146
* </tr>
147
*
148
* <tr>
149
* <th scope="row">setResponseCache</th>
150
* <td>The ability to set the response cache that provides access to
151
* a local response cache.</td>
152
* <td>Malicious code getting access to the local response cache
153
* could access security sensitive information, or create false
154
* entries in the response cache.</td>
155
* </tr>
156
*
157
* <tr>
158
* <th scope="row">setSocketImpl</th>
159
* <td>The ability to create a sub-class of Socket or ServerSocket with a
160
* user specified SocketImpl.</td>
161
* <td>Malicious user-defined SocketImpls can change the behavior of
162
* Socket and ServerSocket in surprising ways, by virtue of their
163
* ability to access the protected fields of SocketImpl.</td>
164
* </tr>
165
*
166
* <tr>
167
* <th scope="row">specifyStreamHandler</th>
168
* <td>The ability
169
* to specify a stream handler when constructing a URL</td>
170
* <td>Malicious code may create a URL with resources that it would
171
* normally not have access to (like file:/foo/fum/), specifying a
172
* stream handler that gets the actual bytes from someplace it does
173
* have access to. Thus it might be able to trick the system into
174
* creating a ProtectionDomain/CodeSource for a class even though
175
* that class really didn't come from that location.</td>
176
* </tr>
177
* </tbody>
178
* </table>
179
*
180
* @implNote
181
* Implementations may define additional target names, but should use naming
182
* conventions such as reverse domain name notation to avoid name clashes.
183
*
184
* @see java.security.BasicPermission
185
* @see java.security.Permission
186
* @see java.security.Permissions
187
* @see java.security.PermissionCollection
188
* @see java.lang.SecurityManager
189
*
190
*
191
* @author Marianne Mueller
192
* @author Roland Schemers
193
* @since 1.2
194
*/
195
196
public final class NetPermission extends BasicPermission {
197
@java.io.Serial
198
private static final long serialVersionUID = -8343910153355041693L;
199
200
/**
201
* Creates a new NetPermission with the specified name.
202
* The name is the symbolic name of the NetPermission, such as
203
* "setDefaultAuthenticator", etc. An asterisk
204
* may appear at the end of the name, following a ".", or by itself, to
205
* signify a wildcard match.
206
*
207
* @param name the name of the NetPermission.
208
*
209
* @throws NullPointerException if {@code name} is {@code null}.
210
* @throws IllegalArgumentException if {@code name} is empty.
211
*/
212
213
public NetPermission(String name)
214
{
215
super(name);
216
}
217
218
/**
219
* Creates a new NetPermission object with the specified name.
220
* The name is the symbolic name of the NetPermission, and the
221
* actions String is currently unused and should be null.
222
*
223
* @param name the name of the NetPermission.
224
* @param actions should be null.
225
*
226
* @throws NullPointerException if {@code name} is {@code null}.
227
* @throws IllegalArgumentException if {@code name} is empty.
228
*/
229
230
public NetPermission(String name, String actions)
231
{
232
super(name, actions);
233
}
234
}
235
236