网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > 数据库 > Oracle教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
数据库:数据库教程,数据库技巧,Oracle教程,MySQL教程,Sybase教程,Access教程,DB2教程,数据库安全,数据库文摘
本月文章推荐
.Oracle 10G Beta版本Bug及其解决.
.Oracle 9i新特性研究五(监视未使.
.审计并报告Oracle数据库中用户活.
.将 图片 文件存储到 Oracle 的存.
.数据库手册:Oracle维护常用SQL语.
.Oracle Database 10 g : 为 DBA .
.Oracle 10g(10.1.0.2)中的OPTIMI.
.chapter3:Oracle Enterprise Man.
.用Oracle动态性能视图采集查询调.
.ASSM内部存储研究大揭密.
.如何杀死oracle死锁进程.
.oracle数据库名词解释.
.Oracle 分布式数据库远程数据访问.
.保证Oracle数据库安全性的策略和.
.使用oralce Cursor.
.Oracle的EXP/IMP版本支持列表.
.MIS系统实例中Oracle数据库的安全.
.上海Oracle OpenWorld大会纪事-0.
.OC4J 10g 10.1.3 数据源中的连接.
.甲骨文金色中国大手笔 三年后举家.

Logon Trigger Example 登陆例子

发表日期:2008-2-9



  EXAMPLE 1)
  
  有时候我们不希望使用者利用ODBC来连接上资料库,利用Access或者Excel来抓资料库资料。在道德劝说无效下,就直接挡下来!
  
  BEGIN
  FOR rec in (select username,program,SYS_CONTEXT('USERENV','IP_ADDRESS') ip from v$session
  where audsid = userenv('sessionid')) loop
  IF rec.IP = ?。16.64.19' AND rec.USERNAME = 'HR' AND upper(rec.program) in
  ('MSACCESS.EXE','SQLPLUSW.EXE','JREW.EXE','MSEXCEL.EXE')
  THEN
  EXIT;
  ELSIF upper(rec.program) in ('MSACCESS.EXE','SQLPLUSW.EXE','JREW.EXE','MSEXCEL.EXE') THEN
  raise_application_error(-20001,'Access Deny');
  END IF;
  END LOOP;
  END;
  
  只有HR并且由指定的IP 172.16.64.19才能使用ACCESS或者SQL*PLUS或者EXCEL连上来,其他的使用者皆无法连线。
  
  但是,拥有DBA OR SYSDBA ROLE的权限帐号,是不会受到此限制。
  
  EXAMPLE 2)
  
  很多时候我们需要写一个logon trigger来进行帐号登入的控管。在Three - tier 架构下,大部分的程式可能都是由一个固定的帐号,授与适当的权限经由AP Server连接到后端的Oracle资料库来进行一般操作, 这个帐号的权限可能很大,而你并不希望programer利用这个帐号进入资料库做一些测试动作,因为这样就达不到有效权限控管的要求。可是这个AP专用的帐号及密码可能是半公开的,你如何防止这样的情况发生呢? 写一个logon trigger 也许是不错的主意。
  
  CREATE OR REPLACE TRIGGER LOGON_DB_TRIGGER
  AFTER LOGON ON DATABASE
  DECLARE
  IP VARCHAR2(30);
  UNAME VARCHAR2(30);
  BEGIN
  SELECT SYS_CONTEXT ('USERENV','IP_ADDRESS'),USERNAME INTO IP,UNAME FROM V$SESSION
  WHERE AUDSID=USERENV('SESSIONID');
  IF IP != ?。16.64.33' AND
  UNAME = 'APPLE' THEN
  RAISE_APPLICATION_ERROR(-1,'CONNECTIION REFUSED');
  END IF;
  END;
  
  写好这个Trigger,只要使用者帐号为apple,且来源IP不是172.16.64.33都会被拒绝连线掉喔!!这样是不是多了些安全管控呢?非凡注重一点,假如欲受限制的帐号权限为DBA or SYSDBA者,将不受此Trigger管制。
上一篇:如何手工建立数据库 人气:937
下一篇:临时表更适合做插入和查询操作 人气:844
浏览全部Oracle教程的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐