当前位置:七道奇文章资讯编程技术Java编程
日期:2011-03-22 16:15:00  来源:本站整理

Java EE操纵中对前端用户的数据库操作的审计[Java编程]

赞助商链接



  本文“Java EE操纵中对前端用户的数据库操作的审计[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

引言

在一些对安全审计有较高要求的系统中,管理员需求查看每个利用程序的登录用户履行了哪些数据库操作,而普通我们利用程序在拜候数据库时,都是公用同一个数据库的认证用户去获得数据库衔接的,这样我们的登录用户的标识无法传送到数据库端.而很多客户是需求在数据库端能审计登录用户的操作.当然,在利用服务器端的程序里写日记,记录下每个登录用户履行了哪些操作也能到达审计的需求,但这种方法常常会有性能的开销.经过实践,本文介绍的办理途径是将用户标识通过数据库衔接传送到数据库端,从而完成在数据库端的审计,这是一种较轻量级的方法.

办理筹划简述

在 JDBC 4.0 之前,JDBC 标准没有供应传送用户标识的 API,我们只能通过数据库厂商供应的 API 去实现.考虑到这一需求的实用性,JDBC 4.0 为我们增添了呼应的 API.目前,Oracle 11g Release 1 (11.1) 和 DB2 9.5 的 JDBC driver 都支持 JDBC 4.0 标准,但在此之前的版本中,我们只能借助于厂商供应的 API.本文介绍了利用这些 API 的一些实践,同时阐明了如安在数据库端查看传送过来的用户标识.

传送用户标识的基本情势为:

数据库会话(session)

JDBC framework(或 O/R mapping 框架)如 Hibernate 和 iBatis 都供应了 session 的概念,session 是对数据库衔接和事件利用的封装.一个数据库会话期间普通利用一个衔接,对应一个事件.

关于纯 JDBC 来说,得到一个数据库衔接就相当于开启了一个会话.

翻开一个数据库会话.

设置用户标识信息.

履行一些数据库操作.

排除衔接上的用户标识.

关闭数据库会话.

此中,排除衔接上的标识非常重要,因为我们普通利用的数据库衔接都是逻辑衔接,关闭逻辑衔接后其对应的物理衔接 (TCP/IP 衔接 ) 并未关闭,所以排除衔接上的标识信息可以确保不影响别的数据库逻辑衔接.

JDBC 4.0 供应的支持

Java 6 支持 JDBC 4.0 标准,在 JDBC 4.0 中供应了在数据库衔接 java.sql.Connection 上传送用户信息的支持.在该接口中供应了两个办法:

void setClientInfo(String name, String value) throws SQLClientInfoException;
void setClientInfo(Properties properties) throws SQLClientInfoException;

第一个办法答应我们在 Connection 上传送三个属性:

ApplicationName:拜候数据库的利用程序名称.

ClientUser: 拜候数据库的用户标识,这个用户和成立数据库衔接的用户是差别的.成立数据库衔接的用户是被能数据库认证和被受权过的用户.

ClientHostname:拜候数据库客户端的主机名.

第二个办法和第一个办法功效近似,只是将参数放到了一个 Properties 对象中.我们普通 setClientInfo(“ClientUser” , userId) 将用户标识附加在数据库衔接上.利用该办法的常见情势是:

清单 1. 利用 JDBC 4.0 API 传送用户标识

Connection conn = getConnection();
conn.setClientInfo("ClientUser" , currentUserId);
//do something on the connection 
conn.setClientInfo("ClientUser" , null);
conn.close();

注意,排除衔接上的用户标识的方法是将标识置为空.下面我们针对两种的常用数据库范例介绍标识传送的办法.

针对 DB2 的标识传送

DB2 供应了 com.ibm.db2.jcc.DB2Connection,该类有下列办法,支持用户信息传送:

public void setDB2ClientUser(String s) throws SQLException;
public void setDB2ClientWorkstation(String s) throws SQLException;
public void setDB2ClientApplicationInformation(String s) throws SQLException;
public void setDB2ClientAccountingInformation(String s) throws SQLException;


  以上是“Java EE操纵中对前端用户的数据库操作的审计[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:

  • 利用Javascript实现网页水印(非图片水印)
  • Java开辟环境的搭建
  • Ubuntu java安装与配置
  • 办理Ubuntu 10.04 Firefox3.6 Java浏览器插件不工作的问
  • Ubuntu重装后Java环境的设置
  • Sun Java进入Ubuntu 10.10软件中央
  • Ubuntu 10.10配置Java开辟环境
  • 在Ubuntu 10.10中配置Java环境变量的办法
  • Ubuntu下Java环境的搭建
  • Ubuntu 10.04 下安装 Java, JRE
  • Ubuntu 10.04下的搭建SUN JAVA开辟环境
  • Ubuntu 12.04安装java7
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .