这个是限制所有除DBA权限的用户从指定的IP登录
通过数据库级的trigger能够限制用户从某个IP登录到数据库.
但是这个trigger却有一定的限制如拥用dba权限能绕过这个限制等等.
CREATE OR REPLACE TRIGGER SYS.USER_LOGON AFTER LOGON ON DATABASE
DECLARE
VAR_USER_IP VARCHAR(30);
BEGIN
select SYS_CONTEXT('USERENV','IP_ADDRESS') INTO VAR_USER_IP FROM DUAL;
IF VAR_USER_IP='192.168.0.1' THEN
RAISE_APPLICATION_ERROR(-20000, 'this ip cant logon');
END IF ;
END;
下面这个是可以对具体某个用户从指定的IP登录:
需要在数据库下建表SYSUSER$IP,我建在了SYS方案下
表结构只要USERNAME和IP字段就可以了。
CREATE OR REPLACE TRIGGER SYS.USER_LOGON AFTER LOGON ON DATABASE
DECLARE
VAR_USER_IP VARCHAR(30);
VAR_USER VARCHAR(30);
USERIP VARCHAR(30);
BEGIN
select SYS_CONTEXT('USERENV','IP_ADDRESS') INTO VAR_USER_IP FROM DUAL;
select user INTO VAR_USER FROM DUAL;
select IP INTO USERIP FROM SYS.SYSUSER$IP WHERE USERNAME=VAR_USER;
IF (VAR_USER_IP != USERIP) THEN
RAISE_APPLICATION_ERROR(-20000, 'this ip cant logon');
END IF ;
END;
还有别的需要就自己扩展一下。
跟大家分享一下!
本文介绍了一种通过数据库触发器来限制用户从特定IP地址登录的方法,并提供了针对不同权限用户的解决方案。
2万+

被折叠的 条评论
为什么被折叠?



