荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: zzt (少年仲永), 信区: Java
标  题: JDBC编程技术(6) (fwd)
发信站: BBS 荔园晨风站 (Sun Apr 11 10:12:01 1999), 转信

技术服务



        第四部分 JDBC编程技术

                    丁锂 孙元 王克宏



     (接上期)

     3.3.3其它应用方法

     在Java的数据库应用中,还有以下的有关方法:

     ·可信任的applet 这种applet
在Java的虚拟机上的应用是可信任的,它们因为标志
有特殊的密码或是用户信任从某个特殊资源获得的applet而成为可信任的。在安全性问题
上,我们将其与application同等对待,但是在其它方面,它更相似与applet,例如在Internet
上查找一个数据库。

     ·区别于从Java
GUI(图形用户界面)到DBMS服务器这种直接的用户/服务器访问途径,在
数据库访问中可以使用三层途径。在这种情况下,Java
的应用程序可以调用网上那些中层的
服务器而反过来它们又可以访问数据库.这些调用必须通过RPC(remote
procedure)或是ORB (object re-qust broker),
无论在哪种情况下,中层的服务器最好用对象模式来定义,如cus
-tomer对象以及它的开发票,地址变换以及其他交易等操作。


我们希望这种三个层次的访问途径能得到越来越普遍的应用,因为这对于管理信息系统(MIS
)的执行者在共享数据上明确定义一个合法操作是大有裨益,这样就可以防止无限制的对DBM
S服务器进行修改,在其他方面这种三层结构也能带来执行时的有利之处。

     这些应用方法如下图示:


一般来说,典型的中层结构是用C或C++语言来实现的。因为Java语言所具有的鲁棒性,安
全性以及多线程处理等特点,所以在考虑将Java的字节代码转换成高效的机器代码的最佳编

译器时,这种中层结构就用Java来实现。JDBC也正是这种中层结构的应用之一。

                       3.4 安全性问题

     前面介绍了JDBC的两种使用方法:applet
和application,因此就相应的需要考虑安全性
问题,这在两种使用方法中有以下体现:

     1.在Java application这种使用方法下,Java
的代码是可信任的,同样出于安全性考虑a pplet 也是可信任的。

     2.相反,如果一个Java
的applet是不可信任的,就不能允许访问本地机上的文件或是进 行任
何主机的网络连接。

     下面我们来介绍具体问题。

     一、JDBC和不可信任的 applets

     JDBC必须遵从标准的applet的安全模式,即:JDBC必须保证普通的无标志的applets
是不
可信任的;JDBC将不允许不可信任的applet存取本地的数据库系统的数据;如果下载了一个
已向JDBC DriverManager 注册的
JDBC驱动程序,那么只有与该驱动程序从同一服务器上下载
的代码中提出的连接要求,JDBC才能利用驱动程序来进行连接;一个不可信任的applet
通常
只能对它所下载的服务器进行数据库连接;在与远程数据库服务器进行连接时,JDBC应当避
免自动或是盲目使用本地机上的私有信息。

     如果一个JDBC
的驱动层能完全保证进行数据库的网络连接时不会发生权限被网上的其它主机或程序所窃
取,那么它就会允许一个applet进行这种连接.当然这种数据库服务器不是
使用IP地址作为限制访问路径的情况是很少的。

     这种对于不可信任的applet的限制的确相当烦琐,但这与一般的applet
安全模式是一致 的,如果取消这些限制的话,可能会带来不便。

     二、 JDBC 和Java的应用程序

     对于一个普通的Java
应用程序(包括除不可信任的applet外的所有的Java代码),JDBC将
很迅速的从本地路径上装载驱动程序,并且允许应用程序自由存取文件及远程的服务器等。


     而对于applet来说,如果从一个远程服务器上下载一个不可信任的sun.sql.Driver
类, 那么这个Drive只能与从同一源服务器上下载的代码一起使用。

     三、网络的安全性


对于JDBC的用户来说,有关数据库操作的安全性以及在网络上尤其是在Internet上数据
的传输问题也是一个很重要的值得考虑的问题。


但是我们这儿介绍的JDBC只是一个用于编程的用户界面,而非网络协议,现有的网络协议
已被DBMS厂家和数据连接厂家不断修改完善。JDBC的用户在使用JD-BC驱动程序和DBMS服务

器之前必须保证网络协议能提供充足而完善的支持。

     四.驱动程序在安全方面的职责


因为JDBC驱动程序可以在很多不同条件下使用,所以为了防止应用程序不发生非法数据连接
等错误,驱动程序的使用者在编写程序时遵守某些特定的简单的安全规则是很重要的。


如果驱动程序是作为一个applet下载的,因为标准的安全管理器将防止applet发生非法
连接错误,那么这些规则是不必要的。然而JDBC驱动程序的编写者必须引起注意的是:如果
驱动程序成功无误,那么用户可能就会在他们的本地盘上安装这些驱动程序,在这种情况下
驱动程序就成为Java环境下可信任的一部分,所以必须保证它不会被访问它的应用程序滥用
所以要求所有JD-BC驱动程序的编写者遵守基本的安全规则。


这些规则在进行连接时就会得到应用,这也正是为什么驱动程序和虚拟机应当检查当前的调
用是否允许对给定的数据库进行连接,一旦建立连接后就不再需要类似的检查了。

     1.共享TCP连接


如果JDBC的驱动程序想要打开一个TCP连接的话,那么Java的安全管理机制将会自动的检
查,首先查看在当前的调用堆栈中是否有applet,如果有的话,则将限制用该applet可以调用

的能进行连接的机器。一般JDBC驱动程序可以将TCP连接的检查留给Java的虚拟机完成。


但是如果JDBC驱动程序试图在多个数据库连接中共享一个TCP连接的话,那么这时就应当
是驱动程序本身来检查它的每一个调用都能与目标数据库进行连接。例如,我们为applet
A对某一机器打开一个TCP连接,这并不意味着我们可以自动的不经检查的允许applet
B来共享此连接,因为也许applet
B无权访问该机器的数据库。所以在允许其他应用程序使
用一个现成的TCP连接时,JDBC驱动程序就必须通过安全管理器一起来检查是否允许当前调
用对数据库进行连接。这一检查可用下列代码段实现:

     securityManager  security =  Sys-tem.getSecurityManager( );
     if  (security  != null )  {
         security.checkConnect( hostname ,  portnumber) ;
     }


     如果连接不允许的话,那么Security.checkConnect
方法将产生一个java.lang.Securit yException的例外处理。

     2.检查所有的本地文件通路


如果JDBC驱动程序需要在当前机器上访问任何本地文件,那么它必须保证它的调用能被允许
打开目标文件。例如下面这段程序代码:

       SecurityManager  security  =  System.getSecurityManager( );
       if  (security  != null )  {
        security.checkRead(fileName) ;
       }



如果当前的调用是不被允许访问给定文件时,Security.checkRead方法将会产生java.la
ng.SecurityException进行例外处理。


至于TCP连接,驱动程序只须关心诸如文件资源是否被多个调用的线程共享,驱动程序是否作
为可信任的代码运行等安全问题。

     3.做最坏的准备


有些驱动程序可能会使用本地机上的 方法来桥接到底层的数据库系统中,在种情况下,
判断这些底层函数可以打开哪些文件或是进行何种连接将是很困难的。所以这时驱动程序
就会作最坏的安全预测,并且否定所有的下载的applet的通路,除非驱动程序能完全保证该
访问不会带来不良后果。


例如JDBC-ODBC桥可能会检查ODBC数据源的名称并且只允许applet使用这些数据源所指
向的可以进行连接的数据库,但是对于某些ODBC数据源名称来说,驱动程序不能确定目标数
据库的主机名,因此也就禁止对这些数据源的下载应用程序的通路。


为了确定当前调用是可信任的应用程序还是applet,JDBC驱动程序将检查调用者是否允
许写任意的文件,如下面的代码所示:

      SecurityManager  Security  =  System.getSecurityManager ( );
      if  ( security  != null )   {
         security.checkWrite( foobaz) ;
      }


     (未完待续)






--



日出东方,唯我不败;
    天上地下,唯我独尊。

※ 来源:.BBS 荔园晨风站 bbs.szu.edu.cn.[FROM: 192.168.0.72]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店