提交 513a4126 编写于 作者: M michaelm

6981426: limit use of TRACE method in HttpURLConnection

Reviewed-by: chegar
上级 f0161058
...@@ -399,6 +399,8 @@ abstract public class HttpURLConnection extends URLConnection { ...@@ -399,6 +399,8 @@ abstract public class HttpURLConnection extends URLConnection {
* @param method the HTTP method * @param method the HTTP method
* @exception ProtocolException if the method cannot be reset or if * @exception ProtocolException if the method cannot be reset or if
* the requested method isn't valid for HTTP. * the requested method isn't valid for HTTP.
* @exception SecurityException if a security manager is set and the
* "allowHttpTrace" NetPermission is not granted.
* @see #getRequestMethod() * @see #getRequestMethod()
*/ */
public void setRequestMethod(String method) throws ProtocolException { public void setRequestMethod(String method) throws ProtocolException {
...@@ -412,6 +414,12 @@ abstract public class HttpURLConnection extends URLConnection { ...@@ -412,6 +414,12 @@ abstract public class HttpURLConnection extends URLConnection {
for (int i = 0; i < methods.length; i++) { for (int i = 0; i < methods.length; i++) {
if (methods[i].equals(method)) { if (methods[i].equals(method)) {
if (method.equals("TRACE")) {
SecurityManager s = System.getSecurityManager();
if (s != null) {
s.checkPermission(new NetPermission("allowHttpTrace"));
}
}
this.method = method; this.method = method;
return; return;
} }
......
...@@ -54,43 +54,22 @@ import java.util.StringTokenizer; ...@@ -54,43 +54,22 @@ import java.util.StringTokenizer;
* <th>What the Permission Allows</th> * <th>What the Permission Allows</th>
* <th>Risks of Allowing this Permission</th> * <th>Risks of Allowing this Permission</th>
* </tr> * </tr>
*
* <tr>
* <td>setDefaultAuthenticator</td>
* <td>The ability to set the
* way authentication information is retrieved when
* a proxy or HTTP server asks for authentication</td>
* <td>Malicious
* code can set an authenticator that monitors and steals user
* authentication input as it retrieves the input from the user.</td>
* </tr>
*
* <tr> * <tr>
* <td>requestPasswordAuthentication</td> * <td>allowHttpTrace</td>
* <td>The ability * <td>The ability to use the HTTP TRACE method in HttpURLConnection.</td>
* to ask the authenticator registered with the system for * <td>Malicious code using HTTP TRACE could get access to security sensitive
* a password</td> * information in the HTTP headers (such as cookies) that it might not
* <td>Malicious code may steal this password.</td> * otherwise have access to.</td>
* </tr> * </tr>
* *
* <tr> * <tr>
* <td>specifyStreamHandler</td> * <td>getCookieHandler</td>
* <td>The ability * <td>The ability to get the cookie handler that processes highly
* to specify a stream handler when constructing a URL</td> * security sensitive cookie information for an Http session.</td>
* <td>Malicious code may create a URL with resources that it would * <td>Malicious code can get a cookie handler to obtain access to
normally not have access to (like file:/foo/fum/), specifying a * highly security sensitive cookie information. Some web servers
stream handler that gets the actual bytes from someplace it does * use cookies to save user private information such as access
have access to. Thus it might be able to trick the system into * control information, or to track user browsing habit.</td>
creating a ProtectionDomain/CodeSource for a class even though
that class really didn't come from that location.</td>
* </tr>
*
* <tr>
* <td>setProxySelector</td>
* <td>The ability to set the proxy selector used to make decisions
* on which proxies to use when making network connections.</td>
* <td>Malicious code can set a ProxySelector that directs network
* traffic to an arbitrary network host.</td>
* </tr> * </tr>
* *
* <tr> * <tr>
...@@ -103,6 +82,22 @@ that class really didn't come from that location.</td> ...@@ -103,6 +82,22 @@ that class really didn't come from that location.</td>
* </tr> * </tr>
* *
* <tr> * <tr>
* <td>getResponseCache</td>
* <td>The ability to get the response cache that provides
* access to a local response cache.</td>
* <td>Malicious code getting access to the local response cache
* could access security sensitive information.</td>
* </tr>
*
* <tr>
* <td>requestPasswordAuthentication</td>
* <td>The ability
* to ask the authenticator registered with the system for
* a password</td>
* <td>Malicious code may steal this password.</td>
* </tr>
*
* <tr>
* <td>setCookieHandler</td> * <td>setCookieHandler</td>
* <td>The ability to set the cookie handler that processes highly * <td>The ability to set the cookie handler that processes highly
* security sensitive cookie information for an Http session.</td> * security sensitive cookie information for an Http session.</td>
...@@ -113,13 +108,21 @@ that class really didn't come from that location.</td> ...@@ -113,13 +108,21 @@ that class really didn't come from that location.</td>
* </tr> * </tr>
* *
* <tr> * <tr>
* <td>getCookieHandler</td> * <td>setDefaultAuthenticator</td>
* <td>The ability to get the cookie handler that processes highly * <td>The ability to set the
* security sensitive cookie information for an Http session.</td> * way authentication information is retrieved when
* <td>Malicious code can get a cookie handler to obtain access to * a proxy or HTTP server asks for authentication</td>
* highly security sensitive cookie information. Some web servers * <td>Malicious
* use cookies to save user private information such as access * code can set an authenticator that monitors and steals user
* control information, or to track user browsing habit.</td> * authentication input as it retrieves the input from the user.</td>
* </tr>
*
* <tr>
* <td>setProxySelector</td>
* <td>The ability to set the proxy selector used to make decisions
* on which proxies to use when making network connections.</td>
* <td>Malicious code can set a ProxySelector that directs network
* traffic to an arbitrary network host.</td>
* </tr> * </tr>
* *
* <tr> * <tr>
...@@ -132,13 +135,16 @@ that class really didn't come from that location.</td> ...@@ -132,13 +135,16 @@ that class really didn't come from that location.</td>
* </tr> * </tr>
* *
* <tr> * <tr>
* <td>getResponseCache</td> * <td>specifyStreamHandler</td>
* <td>The ability to get the response cache that provides * <td>The ability
* access to a local response cache.</td> * to specify a stream handler when constructing a URL</td>
* <td>Malicious code getting access to the local response cache * <td>Malicious code may create a URL with resources that it would
* could access security sensitive information.</td> normally not have access to (like file:/foo/fum/), specifying a
stream handler that gets the actual bytes from someplace it does
have access to. Thus it might be able to trick the system into
creating a ProtectionDomain/CodeSource for a class even though
that class really didn't come from that location.</td>
* </tr> * </tr>
*
* </table> * </table>
* *
* @see java.security.BasicPermission * @see java.security.BasicPermission
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册