Database 版 (精华区)

发信人: wodeji (西西), 信区: Database
标  题: [转载] DBC技术介绍(12)
发信站: 紫 丁 香 (Wed Oct 14 12:51:12 1998), 站内信件

【 以下文字转载自 Java 讨论区 】
【 原文由 lle 所发表 】
  5. 3. Driver的安全责任

    JDBC
driver可能在各种情况下使用,所以驱动的编制者遵循一定的简单的
安全规则,从而避免applet做非法的数据库连接。

  如果所有的驱动都象applet一样从网上下载,那么这些原则将是
不必要的,因为普通的安全规则已经对它做了限制。但是驱动的编
写者必须记住一旦他们的驱动获得成功,用户将在本地磁盘安装这
些驱动,那么驱动将成为Java环境中一个被信任的部分,所以必须
确信它不会被来访的applet所滥用。所以我们鼓励所有的驱动编写者
必须遵循一定安全原则。

  所有这些原则都是在连接打开的时候使用。这正式驱动和虚拟
机器检查当前调用者是否真的可以与指定的数据库连接的时刻。一
旦连接建立就不必做更多的检查了。

  5. 3. 1. 分享TCP/IP连接的时候必须谨慎   如果一个JDBC
驱动试图打开一个 TCP
连接,那么这个打开会被Java
安全管理机制自动检查。这个机构会检查当前调用栈里面有没有
applet,如果有那么就限定它可以访问的机器集合。所以一般地JDBC
驱动可以把TCP建立检查留给Java虚拟机。

  但是如果一个JDBC驱动试图在多个数据库连接之间共享一个
TCP连接,那么驱动就必须自己负责检查每个调用者是否真的被允
许与目标数据库联系。例如如果我们为applet
A打开了一个通往机器foobah 的TCP连接,这并不意味着applet B
被自动允许来共享这个连接。applet
B可能没有任何访问机器foobah的权力。所以在允许某个程序重用
一个现成的TCP连接之前,JDBC
驱动必须通过安全机构来检查当前的的调用者是否可以访问这个连
接。通过下面的代码可是实现这个功能。

   

  SecurityManager security = System.getSecurityManager(); 

  if (security != null) 

  { 

  security.checkConnect(hostName, portNumber); 

  }

  如果连接是不允许的,那么Security.checkConnect方法将产生一
个java.lang.SecurityException。 


--
※ 来源:.紫 丁 香 bbs.hit.edu.cn.[FROM: club.hit.edu.cn]
--
※ 转载:.紫 丁 香 bbs.hit.edu.cn.[FROM: cadcam.hit.edu.c]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:3.296毫秒