PHP8.1.21版本已发布
vue8.1.21版本已发布
jquery8.1.21版本已发布

保护与IBM Informix JDBC、ODBC和ESQL/C驱动程序的连接

原创
2016-06-07 17:54:00 1159浏览

为数据源使用连接池可能会导致基于角色的安全性破坏。IBM Informix 服务器中对可信连接和可信上下文的支持能够灵活地重用连接,向中间层授予受控的权限,以及在三层应用程序中加强用户责任性而不损害其数据库安全性,所有这些都改善了系统性能。

本文将讨论可信连接和可信上下文,展示如何使用 JDBC、ESQL/C 和 ODBC 驱动程序管理可信上下文。

在传统的三层应用程序模型中,您只有在成功授权之后才能与交互,检查和审计由中间层执行。即使有多个用户登录到中间层,中间层也仅使用单个用户 ID 来访问,而且会在所有资源上授予权限。此模型无法获取尝试访问数据库的实际用户身份,以进行访问控制。另外,如果中间层用户 ID 被盗用,可能导致严重的安全威胁。

为了在中间层服务器与数据库服务器之间实现惟一的交互组,Informix 中引入了可信数据库连接 的概念。可信上下文 是在数据库服务器上创建的一种数据库安全对象,它定义了一个可信数据库连接的属性。在连接属性与 Informix 服务器上定义的惟一可信上下文属性匹配时,就会建立可信连接。中间层服务器建立可信连接后,可重用同一个物理连接,而无需在数据库服务器上对最终用户重新进行身份验证。

从应用程序开发人员的角度讲,可信连接的重要性离不开这样一个事实:单个数据库连接可与其他用户共享,同时维护每一个尝试访问数据库的应用程序或用户的 ID。对用户权限的控制有助于适当地授予或限制用户对敏感资源的访问,进而提高系统安全性和用户责任性。

使用 Informix 客户端驱动程序管理可信上下文

在本节中,您将学习如何创建、修改和丢弃一个可信上下文。要创建和管理可信上下文,您的应用程序必须通过 TCP/IP 连接 Informix 服务器。以下 Informix 客户端驱动程序通过公开后面几节中将探讨的相关 API 来支持可信连接。

  • IBM Informix JDBC 驱动程序
  • IBM Informix ODBC 驱动程序
  • IBM Informix ESQL/C 驱动程序

建立可信连接

使用 JDBC 驱动程序

要在 JDBC 应用程序中请求一个可信连接,可将 TRUSTED_CONTEXT = TRUE; 属性包含在数据库 URL 中,如清单 1 中所示。

清单 1. 使用 JDBC 驱动程序连接

				
  jdbc:informix-sqli://hostname:portnumber/database_name:INFORMIXSERVER = server_name;
  TRUSTED_CONTEXT = TRUE;

使用 ODBC 驱动程序

以下是通过 ODBC 建立可信连接的两种方式,一个示例如清单 2 中所示。

使用 SQLSetConnectAttr() API:
SQLSetConnectAttr(hdbc1,SQL_ATTR_USE_TRUSTED_CONTEXT,SQL_TRUE,SQL_IS_INTEGER));

使用连接字符串参数:
TRUSTEDCONTEXT=1; 或 TCTX=1;

清单 2. ODBC 驱动程序的样例连接字符串

"Server=ol_informix_1170;Host=9.124.123.54;Service=ol_informix_1170;Protocol=onsoctcp; Database=stores7;TRUSTEDCONTEXT=1;"

使用 ESQL/C 驱动程序

在 ESQL/C 中,可信连接使用 TRUSTED 关键字和连接语句,以及用户名和密码来建立,如清单 3 中所示。

清单 3. 使用 ESQL/C 驱动程序连接

				
  EXEC SQL CONNECT TO 'database_name' USER 'informix' USING :infx_passwd TRUSTED;

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。