Oracle 密碼復(fù)雜度的設(shè)置_第1頁
Oracle 密碼復(fù)雜度的設(shè)置_第2頁
Oracle 密碼復(fù)雜度的設(shè)置_第3頁
Oracle 密碼復(fù)雜度的設(shè)置_第4頁
Oracle 密碼復(fù)雜度的設(shè)置_第5頁
已閱讀5頁,還剩6頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、Oracle密碼復(fù)雜度的設(shè)置某些情況下,需要強制Oracle數(shù)據(jù)庫中的某些用戶(例如sys,system,或者其他)的密碼,不能太簡單。-雖然作為數(shù)據(jù)庫管理人員,不會設(shè)置太簡單的密碼。但是,當需要數(shù)據(jù)庫級別,不允許設(shè)置太簡單的密碼,如果設(shè)置太簡單的密碼,則拒絕本次操作。首先:先查詢一下.當前數(shù)據(jù)庫中,都有哪些profileSELECTDISTINCTprofileFROMdba_profiles;一般情況下,所有的用戶,是使用一個名字叫DEFAULT的profile下面這個語句,查詢DEFAULT的profile,密碼方面的設(shè)置。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也就是沒有任何的密碼復(fù)雜度限制。由于聽說,直接執(zhí)行那個utlpwdmg.sql,會修改DEFAULT這個PROFILE,從而導(dǎo)致影響所有的用戶。因此只好去找個那個verify_function的代碼,手工做點修改處理。原有的代碼是數(shù)字+大小寫+符號。長度要大于等于4現(xiàn)在修改為僅僅數(shù)字+大小寫,長度要大于等于10。-驗證密碼復(fù)雜度-參數(shù):-username用戶名-password密碼-old_password舊密碼-返回值:驗證是否通過.CREATEORREPLACEFUNCTIONverify_function(usernamevarchar2,pass

4、wordvarchar2,old_passwordvarchar2)RETURNbooleanISnboolean;-用于暫存密碼長度.minteger;differinteger;-是否包含數(shù)字判斷標志.isdigitboolean;-是否包含小寫字母判斷標志.ischar_lowerboolean;-是否包含大寫字母判斷標志.ischar_upperboolean;-數(shù)字字符.digitarrayvarchar2(20);-小寫字母字符.chararray_lowervarchar2(26);-大寫字母字符.chararray_uppervarchar2(26);BEGIN-數(shù)字字符.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;-檢查密碼是否是簡單的單詞-(這一段理論上執(zhí)行不到,因為前面加了密碼長度大于10的限制)IFNLS_LOWER(password)IN(welcome,database,account,user,password,oracle,computer,abcd)THENraise_application_error(-20002,Passwordtoosimple);ENDIF;-檢查密碼是否至少包含一個數(shù)字、一個小寫字母,一個大寫字母.-1.檢查數(shù)字-默認密碼中沒有數(shù)字.isdigit:=FALSE

7、;-取得密碼長度.m:=length(password);-從0-9循環(huán)FORiIN1.10LOOP-遍歷密碼中的每一個字符.FORjIN1.mLOOPIFsubstr(password,j,1)=substr(digitarray,i,1)THEN-如果存在數(shù)字字符,設(shè)置“密碼中有數(shù)字”isdigit:=TRUE;-跳出循環(huán),進入到檢查小寫字符的部分.GOTOfindchar_lower;ENDIF;ENDLOOP;ENDLOOP;IFisdigit=FALSETHENraise_application_error(-20003,Passwordshouldcontainatleastone

8、digit,oneUppercharacterandoneLowercharacter);ENDIF;-2.檢查小寫字符.-默認密碼中沒有小寫字符.ischar_lower:=FALSE;-從a-z循環(huán).FORiIN1.length(chararray_lower)LOOP-遍歷密碼中的每一個字符.FORjIN1.mLOOPIFsubstr(password,j,1)=substr(chararray_lower,i,1)THEN-如果存在小寫字母字符,設(shè)置“密碼中有小寫字母”ischar_lower:=TRUE;-跳出循環(huán),進入到檢查大寫字符的部分.GOTOfindchar_upper;EN

9、DIF;ENDLOOP;ENDLOOP;IFischar_lower=FALSETHENraise_application_error(-20003,Passwordshouldcontainatleastonedigit,oneUppercharacterandoneLowercharacter);ENDIF;-3.檢查大寫字符.-默認密碼中沒有大寫字符.ischar_upper:=FALSE;-從A-Z循環(huán).FORiIN1.length(chararray_upper)LOOPFORjIN1.mLOOPIFsubstr(password,j,1)=substr(chararray_uppe

10、r,i,1)THEN-如果存在大寫字母字符,設(shè)置“密碼中有大寫字母”ischar_upper:=TRUE;-跳出循環(huán),本次新密碼已經(jīng)包含了數(shù)字大寫字母與小寫字母.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-設(shè)置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行出現(xiàn)錯誤:ORA-28003:指定口令的口令驗證失敗ORA-20002:Passwordlengthlessthan10SQLalterusertest_useridentifiedby1234567890;alterusertest_useridentifiedby1234567890*第1行出現(xiàn)錯誤:ORA-28003:指定口令的口令驗證失敗ORA-20003:Passwordshouldcontainatleastonedigit,oneUppercharacterandoneLowercharacterSQLalterusertest_useridentifiedby1234567890A;alteruserte

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論