JEP 184:HTTP URL 权限
概括
定义一种新型网络权限,根据 URL 而不是低级 IP 地址授予访问权限。
动机
目前指定网络权限的唯一方法是使用类java.net.SocketPermission
,它有两个主要缺点:
-
套接字权限控制低级 TCP 连接的启动。因此,它们无法区分与某些主机的 HTTP 连接(可能是允许的)和与同一主机的其他类型的 TCP 连接(可能不允许的)。
-
套接字权限根据 IP 地址而不是主机名进行操作。这使得无法区分托管在相同 IP 地址的同一物理服务器上的虚拟 HTTP 服务器。即使两台这样的服务器具有不同的域名,一个
SocketPermission
实例也不能用于允许访问一台服务器而不允许访问另一台服务器。
描述
此功能将定义特定于 HTTP 或更普遍的任意 URL 方案的更高级别权限类型。该类将能够根据 HTTP 请求方法(GET
、POST
、PUT
等_)_和 URL 方案、权限和路径组件来表达权限。不需要进行 DNS 查找即可进行权限检查或比较权限对象是否相等。
HTTP 协议处理程序将在调用堆栈中检查这些新权限,并使用有限doPrivileged()
功能,有效地将 URL 权限转换SocketPermission
为实际目的地的权限。
测试
此功能引入了一个新类,可以使用 JDK 的内置 HTTP 服务器来测试该类。可以直接编写类本身的单元测试,_即_测试公共方法,例如。implies()
此功能的工程工作将包括两种测试。
依赖关系
此功能取决于JEP 140:Limited doPrivileged。
影响
- 安全:引入新的安全权限。有限的使用
doPrivileged()
应该限制安全问题的风险。