网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
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 Enterprise Manager常见问.
.Oracle归档模式的命令及参数说明.
.如何让sendmail不能支持VRFY等功.
.恰当选择嵌入式Linux环境下的GUI.
.必须引起DBA重视的Oracle数据库碎.
.Oracle 数据库函数库.
.Oracle 的数据库的数据备份与恢复.
.轻松掌握Oralce数据库常用预定义.
.销售订单单行状态不对订单不关闭.
.设置不使用spfile.
.全面解析Oracle体系结构的两个重.
.如何在Spring中解决中文乱码的方.
.DBA 应遵循的 Oracle 调优原则.
.Oracle10gR2安裝.
.Oracle9i初始化参数中文说明(3).
.ORACLE 7.3.4.2 for SCO Unix 安.
.oracle中的connect by 在sql ser.
.自动调整 Oracle9i Database :O.
.如何利用java过程执行操作系统命.
.导入数据后编译所有对象的脚本.

oracle 每个用户 ip访问限制 开发总结

发表日期:2007-10-12


单纯的设定允许的IP 和 禁止的IP
 以前有文档说增加或修改protocol.ora文件,
在9i中真正起作用的是sqlnet.ora文件,我们修改sqlnet.ora其实是最好最快的方法。
 
在sqlnet.ora中增加如下部分
-----------------------------
#### 来自 protocol.ora 的属性 ####
 
tcp.validnode_checking=yes 
 
#允许访问的IP
tcp.invited_nodes=(ip1,ip2……) 
 
#禁止访问的IP
tcp.excluded_nodes=(ip1,ip2……)
 
之后重新启动监听器即可
 
需要注意的地方:
1、tcp.invited_nodes与tcp.excluded_nodes都存在,以tcp.invited_nodes为主
2、一定要许可或不要禁止服务器本机的IP地址,否则通过lsnrctl将不能启动或停止监听,因为该过程监听程序会通过本机的IP访问监听器,而该IP被禁止了,但是通过服务启动或关闭则不影响。
3、修改之后,一定要重起监听才能生效,而不需要重新启动数据库
4、任何平台都可以,但是只适用于TCP/IP协议
但是,客户需求:针对每一个用户,都能指定相应的允许的IP地址.
设计思路
:建立表(用户名,ip地址),触发器 (AFTER LOGON ON DATABASE)
缺点:
不过AFTER LOGON ON DATABASE触发器对有DBA权限的用户不起作用,还好客户说,数据库中拥有DBA权限的用户就几个,并且密码就一个人知道.
如果对DBA用户也要限制IP地址,触发器这种方法就无能威力了.
运行抓图
Table,Trigger,Package源码:

SQL> select * from iplimit;
LOGONUSER  IPBEGIN                 IPEND                    REASON     ADDTIME
----------               ---------------           ---------------              ----------       ----------
PUBLIC             202.94.155.37     202.94.155.101   实验室         17-7月 -06
HYCW               202.94.155.67      202.94.155.67     sd                 17-7月 -06
KFKF                 222.158.124.129 222.158.124.129  开发            17-7月 -06
触发器
CREATE OR REPLACE TRIGGER "LOGON_AUDIT" AFTER
LOGON ON DATABASE
DECLARE
RECORD_NUM NUMBER;
USERIP VARCHAR2(15);
ISFORBIDDEN BOOLEAN:=TRUE;
BEGIN
  USERIP:=SYS_CONTEXT ('USERENV','IP_ADDRESS');
  SELECT COUNT(*) INTO RECORD_NUM FROM ACME.IPLIMIT WHERE LOGONUSER=USER;
  IF(RECORD_NUM>0)THEN
    IF(ACME.SECURITY.ISLEGALIP(USERIP,USER)=FALSE)THEN
      RAISE_APPLICATION_ERROR(-20003,'IP :'||USERIP||' is forbided');
    END IF;
   
  ELSE
    SELECT COUNT(*) INTO RECORD_NUM FROM ACME.IPLIMIT WHERE LOGONUSER='PUBLIC';
    IF(RECORD_NUM>0)THEN
      IF(ACME.SECURITY.ISLEGALIP(USERIP,'PUBLIC')=FALSE)THEN
        RAISE_APPLICATION_ERROR(-20003,'IP :'||USERIP||' is forbided');
      END IF;
    ELSE
      RAISE_APPLICATION_ERROR(-20003,'IP :'||USERIP||' is forbided');
    END IF;
  END IF;   
EXCEPTION
 WHEN NO_DATA_FOUND THEN
  RAISE;
 WHEN VALUE_ERROR THEN
  SYS.Dbms_Output.PUT_LINE('EXCEPTION HANDED');
 WHEN OTHERS THEN
  RAISE;
END LOGON_AUDIT;
/
程序包
CREATE OR REPLACE PACKAGE "SECURITY" IS
  FUNCTION ISLEGALIP(USERIP IN VARCHAR2,USERNAME IN VARCHAR2) RETURN BOOLEAN;
 FUNCTION Chartonumcompare(Char1 IN VARCHAR2,Char2 IN VARCHAR2) RETURN NUMBER ;
 FUNCTION Ipcompare(Ip1 IN VARCHAR2,Ip2 IN VARCHAR2) RETURN NUMBER ;
 END Security;
/
程序包体就不提供了
就是关于上面3个函数的
 
转自:烟台大苹果

上一篇:linux下如何用exp导出oracle10g的数据 人气:2940
下一篇:oracle因为日志错误无法打开 人气:2567
浏览全部oracle的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐