ImageVerifierCode 换一换
格式:DOCX , 页数:8 ,大小:16.63KB ,
资源ID:5268218      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/5268218.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Oracle 密码复杂度的设置.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

Oracle 密码复杂度的设置.docx

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

2、RCE_NAME,3LIMIT4from5dba_profiles6where7profile=DEFAULT8ANDRESOURCE_TYPE=PASSWORD;RESOURCE_NAMELIMIT-FAILED_LOGIN_ATTEMPTSUNLIMITEDPASSWORD_LIFE_TIMEUNLIMITEDPASSWORD_REUSE_TIMEUNLIMITEDPASSWORD_REUSE_MAXUNLIMITEDPASSWORD_VERIFY_FUNCTIONNULLPASSWORD_LOCK_TIMEUNLIMITEDPASSWORD_GRACE_TIMEUNLIMITED已选择7

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

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

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

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

7、默认密码中没有数字.isdigit:=FALSE;-取得密码长度.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,Passwor

8、dshouldcontainatleastonedigit,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;-跳出循环,进入到检查大写字符的

9、部分.GOTOfindchar_upper;ENDIF;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,

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

11、更.IFold_passwordISNOTNULLTHEN-首先获取密码长度的差异.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(pa

12、ssword,i,1)!=substr(old_password,i,1)THENdiffer:=differ+1;ENDIF;ENDLOOP;IFdifferalterusertest_useridentifiedby123;alterusertest_useridentifiedby123*第1行出现错误:ORA-28003:指定口令的口令验证失败ORA-20002:Passwordlengthlessthan10SQLalterusertest_useridentifiedby1234567890;alterusertest_useridentifiedby1234567890*第1行出

13、现错误:ORA-28003:指定口令的口令验证失败ORA-20003:Passwordshouldcontainatleastonedigit,oneUppercharacterandoneLowercharacterSQLalterusertest_useridentifiedby1234567890A;alterusertest_useridentifiedby1234567890A*第1行出现错误:ORA-28003:指定口令的口令验证失败ORA-20003:Passwordshouldcontainatleastonedigit,oneUppercharacterandoneLowercharacterSQLalterusertest_useridentifiedby1234567890Aa;用户已更改。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1