如何理解JDBC的安全模式?
什么是JDBC安全模式?今天给大家详细讲讲JDBC安全模式,以及JDBC安全模式的一些需要注意的问题。在JDBC使用方面应该注意一些安全问题,包括了连接,使用,分享过程中安全问题。
《程序员突击–MySQL原理与Web系统开发》第6章JDBC基础,本章介绍JDBC的基本概念,包括JDBC基本功能、JDBC驱动的4种基本类型等;同时对传统的ODBC接口的体系结构以及数据源的配置方法进行介绍,阐述了JDBC与ODBC的异同,旨在加深读者对JDBC的了解。本节为大家介绍JDBC安全模式。
JDBC安全模式
JDBC是建立在java语言这种强大的安全机制下的,从客户端层面来说,使用JDBC可以开发Java应用程序和Java小应用程序。两种不同的方式体现不同的安全性。对于application和Applet必须分别对待。在JDBC安全方面需要注意以下问题:
(1)分享TCP/IP连接时必须谨慎
如果一个JDBC驱动试图打开一个TCP连接,那么这个打开会被Java安全管理机制自动检查。这个机构会检查当前调用栈里面有没有Applet,如果有那么就限定它可以访问的机器集合。所以一般的JDBC驱动可以把TCP建立检查留给Java虚拟机。但是如果一个JDBC驱动试图在多个数据库连接之间共享一个TCP连接,那么驱动就必须自己负责检查每个调用者是否真的被允许与目标数据库联系。例如,如果为AppletA打开了一个TCP连接,这并不意味着AppletB被自动允许来共享这个连接。AppletB可能没有任何访问的权力。所以在允许某个程序重用一个现成的TCP连接之前,JDBC驱动必须通过安全机构来检查当前的调用者是否可以访问这个连接。通过下面的代码可以实现这个功能:
如果连接是不允许的,那么Security.checkConnect方法将产生一个java.lang.SecurityException异常。
(2)Driver的安全责任
JDBCDriver可能在各种情况下使用,所以驱动的编制者遵循一定的、简单的安全规则,从而避免Applet做非法的数据库连接。如果所有的驱动都像Applet一样从网上下载,那么这些原则将是不必要的,因为普通的安全规则已经对它做了限制。但是驱动的编写者必须记住:一旦他们的驱动获得成功,用户将在本地磁盘安装这些驱动,那么驱动将成为Java环境中一个被信任的部分,所以必须确信它不会被来访的Applet所滥用。所以我们鼓励所有的驱动编写者必须遵循一定的安全原则。所有这些原则都是在连接打开时使用,一旦连接建立就不必做更多的检查了。
(3)做好最坏的准备
一些驱动可能使用本地的方法来桥接底层数据库程序,则这些情况里面判断哪些本地文件将被底层函数所访问是困难的。
在这些环境里面用户必须做好最坏的打算,并且否决所有下载Applet所发出的数据库存取,除非驱动可能完全确信将要做存取是没有问题的。