分享
 
 
 

Oracle安全全接触(完整版)二

王朝oracle·作者佚名  2008-05-19
窄屏简体版  字體: |||超大  

?向密码文件中增加、删除用户:

当初始化参数REMOTE_LOGIN_PASSWORDFILE设置为EXCLUSIVE时,系统允许除INTERNAL/SYS以外的其他用户以管理员身份从远端或本机登录到Oracle数据库系统,执行数据库管理工作;这些用户名必须存在于密码文件中,系统才能识别他们。由于不管是在创建数据库实例时自动创建的密码文件,还是使用工具ORAPWD.EXE手工创建的密码文件,都只包含INTERNAL/SYS用户的信息;为此,在实际操作中,可能需要向密码文件添加或删除其他用户帐号。

由于仅被授予SYSOPER/SYSDBA系统权限的用户才存在于密码文件中,所以当向某一用户授予或收回SYSOPER/SYSDBA系统权限时,他们的帐号也将相应地被加入到密码文件或从密码文件中删除。由此,向密码文件中增加或删除某一用户,实际上也就是对某一用户授予或收回SYSOPER/SYSDBA系统权限。

要进行此项授权操作,需使用SYSDBA权限(或INTERNAL帐号)连入数据库,且初始化参数REMOTE_LOGIN_PASSWORDFILE的设置必须为EXCLUSIVE。具体操作步骤如下:

创建相应的密码文件;

设置初始化参数REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE;

使用SYSDBA权限登录: CONNECT

SYS/internal_user_passsword

AS

SYSDBA;

启动数据库实例并打开数据库;

创建相应用户帐号,对其授权(包括SYSOPER和SYSDBA): 授予权限:GRANT

SYSDBA

TO

user_name;

收回权限:REVOKE

SYSDBA

FROM

user_name;

现在这些用户可以以管理员身份登录数据库系统了;

?使用密码文件登录:

有了密码文件后,用户就可以使用密码文件以SYSOPER/SYSDBA权限登录Oracle数据库实例了,注意初始化参数REMOTE_LOGIN_PASSWORDFILE应设置为EXCLUSIVE或SHARED。任何用户以SYSOPER/SYSDBA的权限登录后,将位于SYS用户的Schema之下,以下为两个登录的例子:

1. 以管理员身份登录:

假设用户scott已被授予SYSDBA权限,则他可以使用以下命令登录:

CONNECT

scott/tiger

AS

SYSDBA

2. 以INTERNAL身份登录:

CONNECT

INTERNAL/INTERNAL_PASSWORD

?密码文件的维护:

1. 查看密码文件中的成员:

可以通过查询视图V$PWFILE_USERS来获取拥有SYSOPER/SYSDBA系统权限的用户的信息,表中SYSOPER/SYSDBA列的取值TRUE/FALSE表示此用户是否拥有相应的权限。这些用户也就是相应地存在于密码文件中的成员。

2. 扩展密码文件的用户数量:

当向密码文件添加的帐号数目超过创建密码文件时所定的限制(即ORAPWD.EXE工具的MAX_USERS参数)时,为扩展密码文件的用户数限制,需重建密码文件,具体步骤如下:

a) 查询视图V$PWFILE_USERS,记录下拥有SYSOPER/SYSDBA系统权限的用户信息;

关闭数据库;

c) 删除密码文件;

d) 用ORAPWD.EXE新建一密码文件;

e) 将步骤a中获取的用户添加到密码文件中。

3. 修改密码文件的状态:

密码文件的状态信息存放于此文件中,当它被创建时,它的缺省状态为SHARED。可以通过改变初始化参数REMOTE_LOGIN_PASSWORDFILE的设置改变密码文件的状态。当启动数据库事例时,Oracle系统从初始化参数文件中读取REMOTE_LOGIN_PASSWORDFILE参数的设置;当加载数据库时,系统将此参数与口令文件的状态进行比较,如果不同,则更新密码文件的状态。若计划允许从多台客户机上启动数据库实例,由于各客户机上必须有初始化参数文件,所以应确保各客户机上的初始化参数文件的一致性,以避免意外地改变了密码文件的状态,造成数据库登陆的失败。

4. 修改密码文件的存储位置:

密码文件的存放位置可以根据需要进行移动,但作此修改后,应相应修改系统注册库有关指向密码文件存放位置的参数或环境变量的设置。

5. 删除密码文件:

在删除密码文件前,应确保当前运行的各数据库实例的初始化参数REMOTE_LOGIN_PASSWORDFILE皆设置为NONE。在删除密码文件后,若想要以管理员身份连入数据库的话,则必须使用操作系统验证的方法进行登录。

但是管理员都觉得乏味,因为在管理员中流行一种很简单的加密办法--就是经常,很频繁地修改自己的密码。可是,每次修改都跟打一次仗似的--因为更新程序并不是每个人都愿意做的事情。

那么有没有什么简单点的办法呢?请往下看:

模型:Oracle7.3;开发工具:Develope2000。收费系统(在数据库中的名称是SFYY),其Client端分散在市区的数个营业点,通过城域网与主机(小型 机)相连。

过程:

?在收费小型机Oracle系统的system用户(DBA)下,创建新用户test;?

create user test?

identified by carton?

default tablespace dataspace1?

quota 100K?

?对test用户授以权限;?

grant create session to test;?

grant resource to test;?

?在test用户下建立一个存储函数mmtranslate,它其实是一个加密程序。下面是一个简单的例子。?

function mmtranslate(m varchar2)?

return varchar2?

as?

i number(2);?

kk varchar2(10);?

begin?

kk:=′′;?

i:=1;?

loop?

if i

if instr(′1234567890′,substr(m,i,1),1,1)0 then?

kk:=kk||chr(100+to_number(substr(m,i,1)));?

elseif instr(‘wxyz‘,substr(m,i,1),1,1)0 then?

kk:=kk||chr(-8+ascii(substr(m,i,1)));?

else?

kk:=kk||chr(4+ascii(substr(m,i,1)));?

end if;?

else?

exit;?

end if;?

i:=i+1;?

end loop;?

return kk;?

exception?

when others then?

return ′-1′;?

end;?

?在test用户下建表mmtest并插入记录:?

create table mmtest?

(usnamevarchar2(6),------用户名称?

mimavarchar2(6)------加密前的密码);?

insert into mmtest values( ‘sfyy‘,‘eds2‘);?

commit;

?执行以下语句?

SQLselect mmtranslate(‘eds2‘) from dual;?

MMTRANSLATE(‘EDS2‘)?

----------------------------------------?

ihwf?

利用DBA权限更改sfyy的密码为上面语句的执行结果:?

alter user sffy?

identified by ihwf; ;?

?修改应用程序,对于开发环境是Develope2000的程序来说,主要是修改主程序的on-lo gon触发器:?

declare?

mm varchar2(6);?

begin?

logon(‘test‘,‘carton‘);?

select mima into mm from mmtest where usname=‘sfyy‘;?

mm:=mmtranslate(mm);?

logout;?

logon(‘sfyy‘,mm);?

end;?

然后再利用触发器WHEN-NEW-FROM-INSTANCE执行Callfrom或Newform等 命令,进入业务处理程序。这个主程序应当仅仅由管理员来掌握,编译之后将执行文件下发 到各收费点的Clien端。?

?在System用户下,利用Oracle提供的pupbld.sql,建立表Productuserprofile,执行下面这样的命令,限制在非开发状态Sql命令的使用,例如?

insert into productuserprofile?

(product,userid,attribute,charvalue) values?

(‘SQL*Plus‘,‘TEST‘,‘CONNECT‘,‘DISABLED‘);?

insert into productuserprofile?

(product,userid,attribute,charvalue) values?

(‘SQL*Plus‘,‘SFYY‘,‘DELETE‘,‘DISABLED‘);这样,在SQL状态下,根本无法连接到TEST用户,而在 sfyy用户下,delete命令将不能执行。当然,DBA可以改变这些设置。

当然了,这个仅仅是属于一种“应用技巧”,但是足可以把那些每天忙于更新系统的管理员舒服好几天了。但是另一方面,还要加强对源程序的管理,在Client端只存放执行程序。加强审计,发现异常现象,及时处理。这样才可以做到更高一层的“安全”。

在下面,我主要是向大家介绍一个REM对GHXXB制立数据库触发子,密码的加密程序。

REM 对GHXXB制立数据库触发子(当INSERT OR UPDATE GHXXB时触发)

drop trigger scjmmm;

create or replace trigger scjmmm

before insert or update of mm On ghxxb For each Row

Begin

:new.mm:=ENCRYPT(:new.mm,:NEW.GH,TO_CHAR(SYSDATE,‘SS‘));

End;

/

---------------------------密码的加密程序ENCRYPT----------------------

Create or Replace

Function ENCRYPT (Inpass In Varchar2,IN_GH In Varchar2,IN_SS In Varchar2)

Return Varchar2 Is

bcs varchar2(20);

bcs1 number;

cs number;

jg number;

m_gh VARCHAR2(4);

m_mm VARCHAR2(20);

Begin

m_gh:=IN_GH;

m_mm:=INPASS;

cs:=TO_NUMBER(IN_SS);

If cs

bcs:=substr(to_char(ascii(substr(m_gh,1,1))),1,2);

If bcs

m_gh:=substr(m_gh,2);

Loop EXIT WHEN nvl(length(m_gh),0)=0 ;

bcs:=bcs||substr(to_ch

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有