Oracle 密码复杂度的设置_第1页
Oracle 密码复杂度的设置_第2页
Oracle 密码复杂度的设置_第3页
Oracle 密码复杂度的设置_第4页
Oracle 密码复杂度的设置_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Oracle密码复杂度的设置某些情况下,需要强制Oracle数据库中的某些用户(例如sys,system,或者其他)的密码,不能太简单。-虽然作为数据库管理人员,不会设置太简单的密码。但是,当需要数据库级别,不允许设置太简单的密码,如果设置太简单的密码,则拒绝本次操作。首先:先查询一下.当前数据库中,都有哪些profileSELECTDISTINCTprofileFROMdba_profiles;一般情况下,所有的用户,是使用一个名字叫DEFAULT的profile下面这个语句,查询DEFAULT的profile,密码方面的设置。SQLselectRESOURCE_NAME,LIMITfrom

2、dba_profileswhere7profile=DEFAULT8ANDRESOURCE_TYPE=PASSWORD;RESOURCE_NAMELIMITFAILED_LOGIN_ATTEMPTSUNLIMITEDPASSWORD_LIFE_TIMEUNLIMITEDPASSWORD_REUSE_TIMEUNLIMITEDPASSWORD_REUSE_MAXUNLIMITEDPASSWORD_VERIFY_FUNCTIONNULLPASSWORD_LOCK_TIMEUNLIMITEDPASSWORD_GRACE_TIMEUNLIMITED已选择7行。注意到,那个PASSWORD_VERIFY

3、_FUNCTION的LIMIT是NULL也就是没有任何的密码复杂度限制。由于听说,直接执行那个utlpwdmg.sql,会修改DEFAULT这个PROFILE,从而导致影响所有的用户。因此只好去找个那个verify_function的代码,手工做点修改处理。原有的代码是数字+大小写+符号。长度要大于等于4现在修改为仅仅数字+大小写,长度要大于等于10。-验证密码复杂度-参数:-username用户名-password密码-old_password旧密码-返回值:验证是否通过.CREATEORREPLACEFUNCTIONverify_function(usernamevarchar2,pass

4、wordvarchar2,old_passwordvarchar2)RETURNbooleanISnboolean;-用于暂存密码长度.minteger;differinteger;-是否包含数字判断标志.isdigitboolean;-是否包含小写字母判断标志.ischar_lowerboolean;-是否包含大写字母判断标志.ischar_upperboolean;-数字字符.digitarrayvarchar2(20);-小写字母字符.chararray_lowervarchar2(26);-大写字母字符.chararray_uppervarchar2(26);BEGIN-数字字符.di

5、gitarray:=0123456789;-小写字符.chararray_lower:=abcdefghijklmnopqrstuvwxyz;-大写字符chararray_upper:=ABCDEFGHIJKLMNOPQRSTUVWXYZ;-检查是否用户名与密码是否相同IFNLS_LOWER(password)=NLS_LOWER(username)THENraise_application_error(-20001,Passwordsameasorsimilartouser);ENDIF;-检查密码的长度是否符合要求.IFlength(password)10THENraise_applica

6、tion_error(-20002,Passwordlengthlessthan10);ENDIF;-检查密码是否是简单的单词-(这一段理论上执行不到,因为前面加了密码长度大于10的限制)IFNLS_LOWER(password)IN(welcome,database,account,user,password,oracle,computer,abcd)THENraise_application_error(-20002,Passwordtoosimple);ENDIF;-检查密码是否至少包含一个数字、一个小写字母,一个大写字母.-1.检查数字-默认密码中没有数字.isdigit:=FALSE

7、;-取得密码长度.m:=length(password);-从0-9循环FORiIN1.10LOOP-遍历密码中的每一个字符.FORjIN1.mLOOPIFsubstr(password,j,1)=substr(digitarray,i,1)THEN-如果存在数字字符,设置“密码中有数字”isdigit:=TRUE;-跳出循环,进入到检查小写字符的部分.GOTOfindchar_lower;ENDIF;ENDLOOP;ENDLOOP;IFisdigit=FALSETHENraise_application_error(-20003,Passwordshouldcontainatleastone

8、digit,oneUppercharacterandoneLowercharacter);ENDIF;-2.检查小写字符.-默认密码中没有小写字符.ischar_lower:=FALSE;-从a-z循环.FORiIN1.length(chararray_lower)LOOP-遍历密码中的每一个字符.FORjIN1.mLOOPIFsubstr(password,j,1)=substr(chararray_lower,i,1)THEN-如果存在小写字母字符,设置“密码中有小写字母”ischar_lower:=TRUE;-跳出循环,进入到检查大写字符的部分.GOTOfindchar_upper;EN

9、DIF;ENDLOOP;ENDLOOP;IFischar_lower=FALSETHENraise_application_error(-20003,Passwordshouldcontainatleastonedigit,oneUppercharacterandoneLowercharacter);ENDIF;-3.检查大写字符.-默认密码中没有大写字符.ischar_upper:=FALSE;-从A-Z循环.FORiIN1.length(chararray_upper)LOOPFORjIN1.mLOOPIFsubstr(password,j,1)=substr(chararray_uppe

10、r,i,1)THEN-如果存在大写字母字符,设置“密码中有大写字母”ischar_upper:=TRUE;-跳出循环,本次新密码已经包含了数字大写字母与小写字母.GOTOendsearch;ENDIF;ENDLOOP;ENDLOOP;IFischar_upper=FALSETHENraise_application_error(-20003,Passwordshouldcontainatleastonedigit,oneUppercharacterandoneLowercharacter);ENDIF;-检查新密码与旧密码,是否至少有3个字母的变更.IFold_passwordISNOTNUL

11、LTHEN-首先获取密码长度的差异.differ:=length(old_password)-length(password);-如果密码长度的差异小于3,那么需要进一步判断了.IFabs(differ)3THEN-设置m=长度比较小的那个密码的长度.IFlength(password)length(old_password)THENm:=length(password);ELSEm:=length(old_password);ENDIF;differ:=abs(differ);-新旧密码字符比较.FORiIN1.mLOOPIFsubstr(password,i,1)!=substr(old_

12、password,i,1)THENdiffer:=differ+1;ENDIF;ENDLOOP;IFdifferalterusertest_useridentifiedby123;alterusertest_useridentifiedby123第1行出现错误:ORA-28003:指定口令的口令验证失败ORA-20002:Passwordlengthlessthan10SQLalterusertest_useridentifiedby1234567890;alterusertest_useridentifiedby1234567890*第1行出现错误:ORA-28003:指定口令的口令验证失败ORA-20003:Passwordshouldcontainatleastonedigit,oneUppercharacterandoneLowercharacterSQLalterusertest_useridentifiedby1234567890A;alteruserte

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论