RMI的安全问题
来源:互联网 发布:js添加数组中指定元素 编辑:程序博客网 时间:2024/05/19 04:52
今天在测试RMI的时候,运行server端出现问题,命令如下:
D:/rmi>java -Djava.security.policy=policy.txt RMIServer
其中policy.txt是策略文件
--------------------------------------------------------------------------------------------------------------------
Exception in thread "RMI TCP Connection(2)-192.168.12.155" java.security.AccessC
ontrolException: access denied (java.net.SocketPermission 192.168.12.155:3576 ac
cept,resolve)
at java.security.AccessControlContext.checkPermission(Unknown Source)
at java.security.AccessController.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkAccept(Unknown Source)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.checkAcceptPermi
ssion(Unknown Source)
at sun.rmi.transport.tcp.TCPTransport.checkAcceptPermission(Unknown Sour
ce)
at sun.rmi.transport.Transport$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at sun.rmi.transport.Transport.serviceCall(Unknown Source)
at sun.rmi.transport.tcp.TCPTransport.handleMessages(Unknown Source)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(Unknown Sour
ce)
at java.lang.Thread.run(Unknown Source)
-------------------------------------------------------------------------------------------------------------------
此时,policy.txt文件如下:
---------------------------------------------------------------------------------------
grant
{
permission java.net.SocketPermission "*:1099","accept,connect,listen";
};
--------------------------------------------------------------------------------------
修改为
--------------------------------------------------------------------------------------
grant
{
permission java.net.SocketPermission "*:*","accept,connect, listen";
};
-------------------------------------------------------------------------------------
后,运行正常。
问题二:直接运行命令,不加策略文件,会出错
D:/rmi>java RMIServer
错误如下:
--------------------------------------------------------------------------------------
Exception in thread "main" java.security.AccessControlException: access denied (
java.net.SocketPermission 192.168.12.155:1099 connect,resolve)
at java.security.AccessControlContext.checkPermission(Unknown Source)
at java.security.AccessController.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkConnect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at java.net.Socket.<init>(Unknown Source)
at java.net.Socket.<init>(Unknown Source)
at sun.rmi.transport.proxy.RMIDirectSocketFactory.createSocket(Unknown S
ource)
at sun.rmi.transport.proxy.RMIMasterSocketFactory.createSocket(Unknown S
ource)
at sun.rmi.transport.tcp.TCPEndpoint.newSocket(Unknown Source)
at sun.rmi.transport.tcp.TCPChannel.createConnection(Unknown Source)
at sun.rmi.transport.tcp.TCPChannel.newConnection(Unknown Source)
at sun.rmi.server.UnicastRef.newCall(Unknown Source)
at sun.rmi.registry.RegistryImpl_Stub.rebind(Unknown Source)
at java.rmi.Naming.rebind(Unknown Source)
at RMIServer.<init>(RMIServer.java:75)
at RMIServer.main(RMIServer.java:37)
---------------------------------------------------------------------------------------------
运行java -Djava.security.policy=policy.txt RMIServer后正常。
这一切是为什么呢?
D:/rmi>java -Djava.security.policy=policy.txt RMIServer
其中policy.txt是策略文件
--------------------------------------------------------------------------------------------------------------------
Exception in thread "RMI TCP Connection(2)-192.168.12.155" java.security.AccessC
ontrolException: access denied (java.net.SocketPermission 192.168.12.155:3576 ac
cept,resolve)
at java.security.AccessControlContext.checkPermission(Unknown Source)
at java.security.AccessController.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkAccept(Unknown Source)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.checkAcceptPermi
ssion(Unknown Source)
at sun.rmi.transport.tcp.TCPTransport.checkAcceptPermission(Unknown Sour
ce)
at sun.rmi.transport.Transport$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at sun.rmi.transport.Transport.serviceCall(Unknown Source)
at sun.rmi.transport.tcp.TCPTransport.handleMessages(Unknown Source)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(Unknown Sour
ce)
at java.lang.Thread.run(Unknown Source)
-------------------------------------------------------------------------------------------------------------------
此时,policy.txt文件如下:
---------------------------------------------------------------------------------------
grant
{
permission java.net.SocketPermission "*:1099","accept,connect,listen";
};
--------------------------------------------------------------------------------------
修改为
--------------------------------------------------------------------------------------
grant
{
permission java.net.SocketPermission "*:*","accept,connect, listen";
};
-------------------------------------------------------------------------------------
后,运行正常。
问题二:直接运行命令,不加策略文件,会出错
D:/rmi>java RMIServer
错误如下:
--------------------------------------------------------------------------------------
Exception in thread "main" java.security.AccessControlException: access denied (
java.net.SocketPermission 192.168.12.155:1099 connect,resolve)
at java.security.AccessControlContext.checkPermission(Unknown Source)
at java.security.AccessController.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkConnect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at java.net.Socket.<init>(Unknown Source)
at java.net.Socket.<init>(Unknown Source)
at sun.rmi.transport.proxy.RMIDirectSocketFactory.createSocket(Unknown S
ource)
at sun.rmi.transport.proxy.RMIMasterSocketFactory.createSocket(Unknown S
ource)
at sun.rmi.transport.tcp.TCPEndpoint.newSocket(Unknown Source)
at sun.rmi.transport.tcp.TCPChannel.createConnection(Unknown Source)
at sun.rmi.transport.tcp.TCPChannel.newConnection(Unknown Source)
at sun.rmi.server.UnicastRef.newCall(Unknown Source)
at sun.rmi.registry.RegistryImpl_Stub.rebind(Unknown Source)
at java.rmi.Naming.rebind(Unknown Source)
at RMIServer.<init>(RMIServer.java:75)
at RMIServer.main(RMIServer.java:37)
---------------------------------------------------------------------------------------------
运行java -Djava.security.policy=policy.txt RMIServer后正常。
这一切是为什么呢?
- RMI的安全问题
- 多线程安全问题以及解决安全问题的原理
- JSP应用的安全问题
- FTP的安全问题
- 格式化字符的安全问题
- HttpWebRequest请求的安全问题
- HttpWebRequest请求的安全问题
- JSP的安全问题
- VVSN 的安全问题。
- 手机的数据安全问题
- JSP应用的安全问题
- GTK+的线程安全问题
- QQ的安全问题
- NFS服务的安全问题
- 电磁波的安全问题
- 浅谈ASP的安全问题
- Ajax不容忽视的安全问题
- tomcat的安全问题
- 2006-10-02 家有魔镜
- asp.net2.0系统用户验证学习笔记
- C++学习笔记
- Visual Studio 2005 Web Deployment Projects版本不同引发的问题
- 考研/嵌入式/我的所思所想及其他
- RMI的安全问题
- 突破该死的无回溯模式匹配算法
- ZZZZ
- 注册表编辑器被禁用、注册表脚本文件被禁用后的解决办法!
- Rman中如何注销目录中已注册的数据库
- 我对PGA、sharedpool 、library cache的理解
- 网页明细统计 - 网界统计
- 郁闷。
- 二○○六年十月二日 "日记"