![Oracle 密码复杂度的设置_第1页](http://file4.renrendoc.com/view/e4fa60994fd97710f72d1813090c2676/e4fa60994fd97710f72d1813090c26761.gif)
![Oracle 密码复杂度的设置_第2页](http://file4.renrendoc.com/view/e4fa60994fd97710f72d1813090c2676/e4fa60994fd97710f72d1813090c26762.gif)
![Oracle 密码复杂度的设置_第3页](http://file4.renrendoc.com/view/e4fa60994fd97710f72d1813090c2676/e4fa60994fd97710f72d1813090c26763.gif)
![Oracle 密码复杂度的设置_第4页](http://file4.renrendoc.com/view/e4fa60994fd97710f72d1813090c2676/e4fa60994fd97710f72d1813090c26764.gif)
![Oracle 密码复杂度的设置_第5页](http://file4.renrendoc.com/view/e4fa60994fd97710f72d1813090c2676/e4fa60994fd97710f72d1813090c26765.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 苏州苏教版三年级数学上册第一单元《两、三位数乘一位数》听评课记录
- 七年级数学上册第5章一元一次方程5.4一元一次方程的应用第4课时利率等其他问题听评课记录(新版浙教版)
- 人教版数学七年级下册5.1.2《垂线》听评课记录2
- 统编版初中语文七年级下册第四课《孙权劝学》听评课记录
- 新版湘教版秋八年级数学上册第四章一元一次不等式组课题不等式听评课记录
- 听评四年级音乐课记录
- 听评课记录七年级历史
- 七年级数学上册第11课时有理数的乘法运算律听评课记录新湘教版
- 人教版七年级数学上册:1.4.2 《有理数的除法》听评课记录
- 粤人版地理七年级下册《第三节 巴西》听课评课记录2
- 2025警察公安派出所年终总结工作汇报
- 年新增1万吨SQ-06Li锂吸附材料技改扩能项目环评资料环境影响
- 机动车检测站新换版20241124质量管理手册
- 智研咨询发布-2025年中国少儿编程行业市场竞争格局、行业政策及需求规模预测报告
- 分管安全副校长在教师会议上讲话:到底如何抓好安全从哪些细节来抓安全
- 湘教版七年级上册数学期末考试试卷带答案
- 中国游戏发展史课件
- 校园安全视频监控维保方案
- 第三单元名著导读《骆驼祥子》整本书阅读教学设计+2023-2024学年统编版语文七年级下册
- 工程数学试卷及答案
- DB11T 211-2017 园林绿化用植物材料 木本苗
评论
0/150
提交评论