applet安全问题,有兴趣的过来看看
我想通过applet访问oracle数据库,我查了资料,说是要配置policy文件,现在我通过appletviewer是可以访问数据库的,直接点击appet的html文件也是可以通过applet访问数据库的,但假如把applet放置到tomcat里面,通过url访问applet就会出现访问控制异常:java.security.AccessControlException: access denied (java.net.SocketPermission zzw resolve)
at java.security.AccessControlContext.checkPermission(AccessControlContext.java:270)
at java.security.AccessController.checkPermission(AccessController.java:401)
at java.lang.SecurityManager.checkPermission(SecurityManager.java:542)
at java.lang.SecurityManager.checkConnect(SecurityManager.java:1042)
at java.net.InetAddress.getAllByName0(InetAddress.java:909)
at java.net.InetAddress.getAllByName0(InetAddress.java:890)
at java.net.InetAddress.getAllByName(InetAddress.java:884)
at java.net.InetAddress.getByName(InetAddress.java:814)
at java.net.InetSocketAddress.<init>(InetSocketAddress.java:109)
at java.net.Socket.<init>(Socket.java:118)
at oracle.net.nt.TcpNTAdapter.connect(Unknown Source)
at oracle.net.nt.ConnOption.connect(Unknown Source)
at oracle.net.nt.ConnStrategy.execute(Unknown Source)
at oracle.net.resolver.AddrResolution.resolveAndExecute(Unknown Source)
at oracle.net.ns.NSProtocol.establishConnection(Unknown Source)
at oracle.net.ns.NSProtocol.connect(Unknown Source)
at oracle.jdbc.ttc7.TTC7Protocol.connect(TTC7Protocol.java:1258)
at oracle.jdbc.ttc7.TTC7Protocol.logon(TTC7Protocol.java:215)
at oracle.jdbc.driver.OracleConnection.<init>(OracleConnection.java:307)
at oracle.jdbc.driver.OracleDriver.getConnectionInstance(OracleDriver.java:442)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:321)
at java.sql.DriverManager.getConnection(DriverManager.java:512)
at java.sql.DriverManager.getConnection(DriverManager.java:171)
............................
问题点数:100、回复次数:6Top
1 楼kevin_yu118(凯文)回复于 2003-09-04 14:57:00 得分 0
我看资料上说appletviewer用的是D:\j2sdk1.4.0_02\jre\lib\security目录下的java.policy文件而浏览器用的是C:\Program Files\Java\j2re1.4.0_02\lib\security目录下的java.policy文件,所以我通过policytool修改了C:\Program Files\Java\j2re1.4.0_02\lib\security目录下的java.policy文件,增加了以下语句:
grant codeBase "file:/D:/jakarta-tomcat-3.2.3/webapps/ROOT" {
permission java.security.AllPermission;
permission java.net.NetPermission "setDefaultAuthenticator";
permission java.net.SocketPermission "zzw:1521", "accept, connect, listen, resolve";
};
其中zzw:1521:ddg是我得数据库访问的url,可惜还是不能访问,请高手不吝赐教!Top
2 楼crazyboy123(狂徒)回复于 2003-09-04 15:44:56 得分 0
数据库服务器和tomcat在同一物理服务器上吗Top
3 楼kevin_yu118(凯文)回复于 2003-09-04 16:53:34 得分 0
是在一台机子上Top
4 楼crazyboy123(狂徒)回复于 2003-09-05 09:05:44 得分 50
如在同一台机器上就不存在安全问题,Applet有一条规则“只能把电话打回家”也就是说Applet在默认的情况下只能访问发布它的服务器。你试着把“zzw”改成IP,出错信息显示应该是找不到zzw这台服务器.Top
5 楼YuLimin(阿敏总司令:简单就是美—钻石闪闪您快结贴!)回复于 2003-09-07 20:19:29 得分 25
.class在哪台服务器上下载下来的,只能访问哪台服务器!Top
6 楼masterz(www.fruitfruit.com)回复于 2003-09-07 20:43:36 得分 25
你的codebase写的不对
从web访问的applet, codebase写成http://192.22.234.33/path/myfile.jarTop




