版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二四年度区块链技术服务与租赁合同3篇
- 2024年度保险合同标的:企业财产保险一份3篇
- 2024年度大数据产业发展融资合同2篇
- 2024年度保险经纪服务合同保险方案与服务内容3篇
- 二零二四年文化艺术品数字化展示平台建设合同3篇
- 全新农村消防水池修建及管理服务2024年度承包合同2篇
- 饭堂承包合同范本
- 二零二四年度云计算平台建设与运维合同
- 脱模剂购销合同
- 2024年度广告投放代理合同(新媒体平台)2篇
- 印刷服务进度安排方案
- 景区引流协议合同范本
- 全球及中国疤痕治疗行业市场现状供需分析及市场深度研究发展前景及规划可行性分析研究报告(2024-2030)
- 2024委托物业管理电梯协议书
- 传统医学与区块链技术结合探索
- 2024年刑法知识考试题库及参考答案(满分必刷)
- 生命科学导论(上海交通大学)智慧树知到期末考试答案章节答案2024年
- 2024年辽宁省沈阳市中考物理模拟试题
- 妙手传译手语 知到智慧树网课答案
- 无人机结构与系统教学大纲
- 小猪佩奇第1季第19集新鞋子-中英台词
评论
0/150
提交评论