使用Oracle的PROFILE對用戶資源限制和密碼限制的研究與探索_第1頁
使用Oracle的PROFILE對用戶資源限制和密碼限制的研究與探索_第2頁
使用Oracle的PROFILE對用戶資源限制和密碼限制的研究與探索_第3頁
使用Oracle的PROFILE對用戶資源限制和密碼限制的研究與探索_第4頁
使用Oracle的PROFILE對用戶資源限制和密碼限制的研究與探索_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、使用Oracle的PROFILE對用戶資源限制和密碼限制的研究與探索1.用戶創(chuàng)建語句 PROFILE選項“引發(fā)的血案”如果大家細心的話,在創(chuàng)建用戶的語法中有這么一個選項“PROFILE profile”。下面是 Oracle 11gR2官方文檔中關(guān)于創(chuàng)建用戶的語法描述(較之 10g的文檔可讀性加強了,當然功能也同樣有所增加):CREATE USER userIDENTIFIED  BY password      EXTERNALLY  AS 'c

2、ertificate_DN' AS 'kerberos_principal_name'       GLOBALLY  AS ' directory_DN '  DEFAULT TABLESPACE tablespaceTEMPORARY TABLESPACE tablespace tablespace_group_name  

3、QUOTA  size_clause UNLIMITED  ON tablespace .PROFILE profilePASSWORD EXPIREACCOUNT  LOCK UNLOCK  DEFAULT TABLESPACE tablespaceTEMPORARY TABLESPACE tablespace tablespace_group_name  QUOTA 

4、60;size_clause UNLIMITED  ON tablespace .PROFILE profilePASSWORD EXPIREACCOUNT  LOCK UNLOCK ENABLE EDITIONS. 2.提問:PROFILE選項是做什么用的呢?回答:簡要的說,PROFILE在Oracle數(shù)據(jù)庫對 數(shù)據(jù)庫用戶能夠使用的資源做進一步的限制的一種手段,如對連接到某個用戶的session或 sql所能使用的CPU資源進行控制,又如控制Oracle用戶的密碼

5、 管理策略等等3.查看系統(tǒng)的默認PROFILE1)通過dba_profiles視圖查看一下系統(tǒng)中默認都有哪些PROFILE數(shù)據(jù)庫創(chuàng)建以后,系統(tǒng)中只會存在一個名為DEFAULT的默認PROFILE,在用戶創(chuàng)建之后,如果不做特殊指定,每個用戶的PROFILE都會默認的使用個默認的PROFILE。sysora10g> select distinct profile from dba_profiles;PROFILE-DEFAULT2)全面查看一下這個PROFILE都包含哪些限制定義sysora10g> select *

6、 from dba_profiles;PROFILE    RESOURCE_NAME                    RESOURCE LIMIT- - - -DEFAULT    COMPOSITE_LIMIT   &#

7、160;              KERNEL   UNLIMITEDDEFAULT    SESSIONS_PER_USER                KERNEL   UNLIMITEDDE

8、FAULT    CPU_PER_SESSION                  KERNEL   UNLIMITEDDEFAULT    CPU_PER_CALL            

9、         KERNEL   UNLIMITEDDEFAULT    LOGICAL_READS_PER_SESSION        KERNEL   UNLIMITEDDEFAULT    LOGICAL_READS_PER_CALL    

10、;       KERNEL   UNLIMITEDDEFAULT    IDLE_TIME                        KERNEL   UNLIMITEDDEFAULT

11、    CONNECT_TIME                     KERNEL   UNLIMITEDDEFAULT    PRIVATE_SGA          

12、60;           KERNEL   UNLIMITEDDEFAULT    FAILED_LOGIN_ATTEMPTS            PASSWORD 10DEFAULT    PASSWORD_LIFE_TIME 

13、60;             PASSWORD UNLIMITEDDEFAULT    PASSWORD_REUSE_TIME              PASSWORD UNLIMITEDDEFAULT    PASSWORD

14、_REUSE_MAX               PASSWORD UNLIMITEDDEFAULT    PASSWORD_VERIFY_FUNCTION         PASSWORD NULLDEFAULT    PASSWORD_LOCK_TIME&

15、#160;              PASSWORD UNLIMITEDDEFAULT    PASSWORD_GRACE_TIME              PASSWORD UNLIMITED16 rows selected.3)結(jié)論

16、通過上面的查看,可以得到這個系統(tǒng)默認的PROFILE “DEFAULT”的配置信息只對密碼的錯誤嘗試次數(shù)做了限制(最多可以錯誤輸錯10次密碼),如果我們啟用了PROFILE(下面有介紹如何啟用和停止PROFILE),默認的限制只有這些。如果想要改變限制條件,有兩種方法:第一種方法是可以對這個默認的PROFILE做個性化的調(diào)整;第二種方法是再重新定制一個新的PROFILE滿足新的需求。4.對創(chuàng)建PROFILE的標準語法做一下“解剖麻雀”(更多細節(jié)可以參考Oracle的官方文檔)1)創(chuàng)建PROFILE的語法如下:CREATE PROFILE profile  

17、; LIMIT resource_parameters 對資源的限制         | password_parameters 對密碼的限制.;2)對數(shù)據(jù)庫資源做限制時,下面是全部可用的參數(shù): SESSIONS_PER_USER 每個用戶名所允許的并行會話數(shù)  | CPU_PER_SESSION   一個會話一共可以使用的CPU時間,單位是百分之一秒  | CPU_PER_CALL      一次SQL調(diào)用(解析、執(zhí)行和獲取

18、)允許使用的CPU時間  | CONNECT_TIME      限制會話連接時間,單位是分鐘  | IDLE_TIME         允許空閑會話的時間,單位是分鐘  | LOGICAL_READS_PER_SESSION 限制會話對數(shù)據(jù)塊的讀取,單位是塊  | LOGICAL_READS_PER_CALL    限制SQL調(diào)用對數(shù)據(jù)塊的讀取,單位是塊  | COMPOSITE_LI

19、MIT   “組合打法” integer | UNLIMITED | DEFAULT | PRIVATE_SGA   限制會話在SGA中Shared Pool中私有空間的分配 size_clause | UNLIMITED | DEFAULT 3)對密碼做限制時,下面是全部可用的參數(shù): FAILED_LOGIN_ATTEMPTS 帳戶被鎖定之前可以錯誤嘗試的次數(shù)  | PASSWORD_LIFE_TIME  

20、;  密碼可以被使用的天數(shù),單位是天,默認值180天  | PASSWORD_REUSE_TIME   密碼可重用的間隔時間(結(jié)合PASSWORD_REUSE_MAX)  | PASSWORD_REUSE_MAX    密碼的最大改變次數(shù)(結(jié)合PASSWORD_REUSE_TIME)  | PASSWORD_LOCK_TIME    超過錯誤嘗試次數(shù)后,用戶被鎖定的天數(shù),默認1天  | PASSWORD_GRACE_TIME   當密碼過期之后還

21、有多少天可以使用原密碼 expr | UNLIMITED | DEFAULT | PASSWORD_VERIFY_FUNCTION function | NULL | DEFAULT 5.OK,語法已經(jīng)了然于胸,那么我們來實際創(chuàng)建一個PROFILE(這里的名字我們稱其為:sec_profile),在感性認識的同時一同探索一下在這個過程中會遇到的一些有趣現(xiàn)象。1)嘗試創(chuàng)建一個混合型的PROFILE(包含 資源限制和密碼限制)sysora10g> CRE

22、ATE PROFILE sec_profile LIMIT2     SESSIONS_PER_USER          UNLIMITED3     CPU_PER_SESSION            UNLIMITED4  

23、;   CPU_PER_CALL               60005     CONNECT_TIME               606     LOGICAL_R

24、EADS_PER_SESSION  DEFAULT7     LOGICAL_READS_PER_CALL     60008     COMPOSITE_LIMIT            60000009     PRIVATE_SGA  

25、;              66K10     FAILED_LOGIN_ATTEMPTS      611     PASSWORD_LIFE_TIME         6012  &#

26、160;  PASSWORD_REUSE_TIME        6013     PASSWORD_REUSE_MAX         514     PASSWORD_LOCK_TIME         1/2415

27、     PASSWORD_GRACE_TIME        1016     PASSWORD_VERIFY_FUNCTION   verify_function17  /CREATE PROFILE sec_profile LIMIT*ERROR at line 1:ORA-07443: fu

28、nction VERIFY_FUNCTION not found2)報錯原因為什么會報錯?錯誤提示很清楚,VERIFY_FUNCTION這個函數(shù)不存在。既然知道不存在,那我們?nèi)绾蝿?chuàng)建它呢?回答:VERIFY_FUNCTION函數(shù)是通過utlpwdmg.sql腳本創(chuàng)建的,該腳本所在的目錄是$ORACLE_HOME/rdbms/admin/3)創(chuàng)建密碼復(fù)雜性檢驗函數(shù)VERIFY_FUNCTION我們使用utlpwdmg.sql腳本創(chuàng)建以下這個VERIFY_FUNCTION密碼復(fù)雜度校驗函數(shù)sysora10g> ?/rdbms/admin/utlpwdm

29、g.sqlFunction created.Profile altered.4)utlpwdmg.sql腳本中的小秘密細心的您在執(zhí)行utlpwdmg.sql腳本的過程中一定發(fā)現(xiàn)了有一個“Profile altered”的提示,難道這個腳本修改了某個PROFILE信息么?正如您所料,它修改了系統(tǒng)的默認PROFILE “DEFAULT”,再次查看一下現(xiàn)在的DEFAULT的定義信息:sysora10g> select * from dba_profiles;PROFILE    RESOURCE

30、_NAME                    RESOURCE LIMIT- - - -DEFAULT    COMPOSITE_LIMIT              

31、0;   KERNEL   UNLIMITEDDEFAULT    SESSIONS_PER_USER                KERNEL   UNLIMITEDDEFAULT    CPU_PER_SESSION    

32、              KERNEL   UNLIMITEDDEFAULT    CPU_PER_CALL                     KERNEL &#

33、160; UNLIMITEDDEFAULT    LOGICAL_READS_PER_SESSION        KERNEL   UNLIMITEDDEFAULT    LOGICAL_READS_PER_CALL           KERNEL   U

34、NLIMITEDDEFAULT    IDLE_TIME                        KERNEL   UNLIMITEDDEFAULT    CONNECT_TIME     &#

35、160;               KERNEL   UNLIMITEDDEFAULT    PRIVATE_SGA                      

36、;KERNEL   UNLIMITEDDEFAULT    FAILED_LOGIN_ATTEMPTS            PASSWORD 3DEFAULT    PASSWORD_LIFE_TIME             

37、  PASSWORD 60DEFAULT    PASSWORD_REUSE_TIME              PASSWORD 1800DEFAULT    PASSWORD_REUSE_MAX            

38、;   PASSWORD UNLIMITEDDEFAULT    PASSWORD_VERIFY_FUNCTION         PASSWORD VERIFY_FUNCTIONDEFAULT    PASSWORD_LOCK_TIME            

39、;   PASSWORD .0006DEFAULT    PASSWORD_GRACE_TIME              PASSWORD 1016 rows selected.與系統(tǒng)創(chuàng)建時的DEFAULT PROFILE相比較,之前只有10次密碼輸入錯誤的限制,執(zhí)行完成這個函數(shù)創(chuàng)建之后,我們發(fā)現(xiàn)系統(tǒng)默認的PROFILE已經(jīng)對系統(tǒng)有了一個非常嚴格

40、的約束。也就是說現(xiàn)在系統(tǒng)上的每一個用戶在默認情況下都多了這些密碼方面的限制。5)驗證一下新默認的PROFILE “DEFAULT”關(guān)于錯誤密碼輸入次數(shù)的限制我們模擬一下錯誤輸錯密碼三次后的效果,可以看到,在第四次輸入后,sec用戶被鎖定了。sysora10g> conn sec/aERROR:ORA-01017: invalid username/password; logon deniedWarning: You are no longer connected to&

41、#160;ORACLE.sysora10g> conn sec/aERROR:ORA-01017: invalid username/password; logon deniedsysora10g> conn sec/aERROR:ORA-01017: invalid username/password; logon deniedsysora10g> conn sec/aERROR:ORA-28000: the acc

42、ount is locked6)使用dba_users視圖比較一下用戶的前后狀態(tài)用戶sec已經(jīng)因錯誤密碼輸入次數(shù)超過3此導致用戶被鎖定了,進一步比較一下用戶的狀態(tài)。sysora10g> col USERNAME for a10sysora10g> col ACCOUNT_STATUS for a20sysora10g> col PROFILE for a10sysora10g> select USERNAME,A

43、CCOUNT_STATUS,LOCK_DATE,EXPIRY_DATE from dba_users where username = 'SEC'USERNAME   ACCOUNT_STATUS       LOCK_DATE           EXPIRY_DATE- - - 

44、-SEC        OPENsysora10g> select USERNAME,ACCOUNT_STATUS,LOCK_DATE,EXPIRY_DATE from dba_users where username = 'SEC'USERNAME   ACCOUNT_STATUS       LOCK_DATE&

45、#160;          EXPIRY_DATE- - - -SEC        LOCKED(TIMED)        2009-10-11 16:05:03 2009-12-09 08:46:367)既然默認的PROFILE發(fā)生了變化,那么就會面臨一個實際問題,如何恢

46、復(fù)成原始狀態(tài)呢?這里給出一個比較簡單的方法,就是使用ALTER PROFILE命令修改成原來的模樣sysora10g> ALTER PROFILE DEFAULT LIMIT2   COMPOSITE_LIMIT             UNLIMITED3   SESSIONS_PER_USER     

47、60;     UNLIMITED4   CPU_PER_SESSION             UNLIMITED5   CPU_PER_CALL                UNLIMITED6

48、   LOGICAL_READS_PER_SESSION   UNLIMITED7   LOGICAL_READS_PER_CALL      UNLIMITED8   IDLE_TIME                   UN

49、LIMITED9   CONNECT_TIME                UNLIMITED10   PRIVATE_SGA                 UNLIMITED11  &

50、#160;FAILED_LOGIN_ATTEMPTS       1012   PASSWORD_LIFE_TIME          UNLIMITED13   PASSWORD_REUSE_TIME         UNLIMITED14   P

51、ASSWORD_REUSE_MAX          UNLIMITED15   PASSWORD_VERIFY_FUNCTION    NULL16   PASSWORD_LOCK_TIME          UNLIMITED17   PASSWORD_GRACE_

52、TIME         UNLIMITED18  /Profile altered.8)最后我們重新創(chuàng)建一下這個實驗PROFILE:sec_profile,可以預(yù)測,這次一定會成功滴sysora10g> CREATE PROFILE sec_profile LIMIT2     SESSIONS_PER_USER     

53、0;    UNLIMITED3     CPU_PER_SESSION            UNLIMITED4     CPU_PER_CALL               60005

54、     CONNECT_TIME               606     LOGICAL_READS_PER_SESSION  DEFAULT7     LOGICAL_READS_PER_CALL     60008

55、60;    COMPOSITE_LIMIT            60000009     PRIVATE_SGA                66K10     FAILED

56、_LOGIN_ATTEMPTS      611     PASSWORD_LIFE_TIME         6012     PASSWORD_REUSE_TIME        6013     PASSWORD_

57、REUSE_MAX         514     PASSWORD_LOCK_TIME         1/2415     PASSWORD_GRACE_TIME        1016    &

58、#160;PASSWORD_VERIFY_FUNCTION   verify_function17  /Profile created.創(chuàng)建成功鳥在這個 實驗中,我們使用了PROFILE幾乎所有的參數(shù),惟一沒有包含的參數(shù)是IDLE_TIME,目的僅僅是為了說明一個細節(jié):如果該PROFILE被授權(quán)給用戶后,這個被省略的IDLE_TIME參數(shù)將繼承默認PROFILE “DEFALT”中的定義。對上面我們創(chuàng)建的PROFILE逐行做一下詮釋,以便加深理解:第 2行:對用戶的并發(fā)連接會話數(shù)不做限制第 3行:對于連接到用戶的每一個session的

59、CPU時間的使用不做限制第 4行:一次調(diào)用消耗的CPU時間不能超過60秒(不超過一分鐘)第 5行:連接到用戶的每次會話時間不能超過60分鐘(不超過一個小時)第 6行:一次會話使用的物理讀與邏輯讀數(shù)據(jù)塊總量與DEFAULT profile中定義保持一致第 7行:一次調(diào)用使用的物理讀與邏輯讀數(shù)據(jù)塊總量不超過6000個數(shù)據(jù)塊第 8行:一次會話總的資源消耗不超過6000000個服務(wù)單元(service units)第 9行:一次會話在SGA中不能分配超過66K的空間第10行:帳戶被鎖定之前允許6次的錯誤嘗試第11行:超過此生命周期后密碼作廢第12行:密碼重用時間60天第13行:密碼重用之前密碼需要完成

60、5次改變第14行:超過錯誤嘗試次數(shù)后,用戶將被鎖定1小時第15行:當密碼過期之后原密碼還可以使用10天第16行:使用密碼復(fù)雜度校驗函數(shù)verify_function對密碼做檢查再單獨深入解釋一下第12行和13行組合搭配之后的含義:也就是說只有完成了5次的密碼修改后并且已經(jīng)超過60天后,之前的密碼才能夠再一次被使用。9)通過dba_profiles視圖再一次查看一下此時系統(tǒng)中存在的PROFILE的信息sysora10g> col PROFILE for a12sysora10g> col RESOURCE_NAME 

61、;for a25sysora10g> col LIMIT for a15sysora10g> select * from dba_profiles order by 1,2;PROFILE      RESOURCE_NAME             RESOURCE 

62、;LIMIT- - - -DEFAULT      COMPOSITE_LIMIT           KERNEL   UNLIMITEDDEFAULT      CONNECT_TIME          

63、    KERNEL   UNLIMITEDDEFAULT      CPU_PER_CALL              KERNEL   UNLIMITEDDEFAULT      CPU_PER_SESSION  &

64、#160;        KERNEL   UNLIMITEDDEFAULT      FAILED_LOGIN_ATTEMPTS     PASSWORD 3DEFAULT      IDLE_TIME         

65、;        KERNEL   UNLIMITEDDEFAULT      LOGICAL_READS_PER_CALL    KERNEL   UNLIMITEDDEFAULT      LOGICAL_READS_PER_SESSION KERNEL  

66、0;UNLIMITEDDEFAULT      PASSWORD_GRACE_TIME       PASSWORD 10DEFAULT      PASSWORD_LIFE_TIME        PASSWORD 60DEFAULT      P

67、ASSWORD_LOCK_TIME        PASSWORD .0006DEFAULT      PASSWORD_REUSE_MAX        PASSWORD UNLIMITEDDEFAULT      PASSWORD_REUSE_TIME   

68、0;   PASSWORD 1800DEFAULT      PASSWORD_VERIFY_FUNCTION  PASSWORD VERIFY_FUNCTIONDEFAULT      PRIVATE_SGA               KERNEL

69、0;  UNLIMITEDDEFAULT      SESSIONS_PER_USER         KERNEL   UNLIMITEDSEC_PROFILE  COMPOSITE_LIMIT           KERNEL   50

70、00000SEC_PROFILE  CONNECT_TIME              KERNEL   45SEC_PROFILE  CPU_PER_CALL              KERNEL   3000SEC

71、_PROFILE  CPU_PER_SESSION           KERNEL   UNLIMITEDSEC_PROFILE  FAILED_LOGIN_ATTEMPTS     PASSWORD 5SEC_PROFILE  IDLE_TIME       

72、60;         KERNEL   DEFAULTSEC_PROFILE  LOGICAL_READS_PER_CALL    KERNEL   1000SEC_PROFILE  LOGICAL_READS_PER_SESSION KERNEL   DEFAULTSEC_PROFILE  PASSWOR

73、D_GRACE_TIME       PASSWORD 10SEC_PROFILE  PASSWORD_LIFE_TIME        PASSWORD 60SEC_PROFILE  PASSWORD_LOCK_TIME        PASSWORD .0416SEC_PROFILE 

74、 PASSWORD_REUSE_MAX        PASSWORD 5SEC_PROFILE  PASSWORD_REUSE_TIME       PASSWORD 60SEC_PROFILE  PASSWORD_VERIFY_FUNCTION  PASSWORD VERIFY_FUNCTIONSEC_PROFILE  PR

75、IVATE_SGA               KERNEL   15360SEC_PROFILE  SESSIONS_PER_USER         KERNEL   UNLIMITED32 rows selected.10)刪除PROFILE既然有創(chuàng)建,

76、就一定對應(yīng)著刪除,刪除方法很簡單,語法如下:DROP PROFILE profile  CASCADE  如果創(chuàng)建的PROFILE已經(jīng)授權(quán)給了具體的用戶,則需要使用CASCADE選項級聯(lián)的收回相應(yīng)的限制信息,在收回這些限制信息之后將會以系統(tǒng)默認的PROFILE對該用戶進行限制。刪除示例如下:sysora10g> drop profile SEC_PROFILE cascade;Profile dropped.如果該PROFILE已經(jīng)授權(quán)給具體的用戶,使用不帶有cascade選項的

77、刪除命令將得到如下的報錯信息:sysora10g> drop profile SEC_PROFILE;drop profile SEC_PROFILE*ERROR at line 1:ORA-02382: profile SEC_PROFILE has users assigned, cannot drop without CASCADE6.關(guān)于PROFILE內(nèi)容何時生效的一點注意事項這里討論需要談到一個系統(tǒng)參數(shù),它就是

78、resource_limit。如果要開啟“資源限制”的話,這個參數(shù)必須是“TRUE”的狀態(tài)sysora10g> show parameter resource_limitNAME            TYPE                 VALUE- -&#

79、160;-resource_limit  boolean              FALSE這里有一個小細節(jié)不得不提:之所以稱這個參數(shù)為resource_limit(資源限制)而沒有稱作“profile_limit”,是因為這個參數(shù)只對PROFILE中的資源限制部分起作用,如果是默認的FALSE狀態(tài),表示PROFILE定義中的資源限制條件不起作用,只有該參數(shù)為TRUE時,資源限制的定義才生效。不過,關(guān)于PROFILE中密碼限制的條件則

80、與這個參數(shù)無關(guān),無論這個參數(shù)設(shè)置為什么值,有關(guān)密碼限制的條件都會默認生效,從這個細節(jié)上可以看出來Oracle對用戶密碼的重視程度。因此關(guān)于PROFILE的生效情況結(jié)論是:1)用戶所有擁有的PROFILE中有關(guān)密碼的限制永遠生效,不受限制。2)用戶所有擁有的PROFILE中有關(guān)資源的限制與resource_limit參數(shù)的設(shè)置有關(guān),當為TRUE時生效,當為FALSE時(默認值是FALSE)無效。7.一切都OK了,最后我們來演示一下將新創(chuàng)建的PROFILE sec_profile指定給具體用戶sec的操作sysora10g> alter user sec

81、0;profile sec_profile;User altered.sysora10g> select USERNAME,PROFILE from dba_users where USERNAME = 'SEC'USERNAME   PROFILE- -SEC        SEC_PROFILE8.【附】密碼驗證函數(shù)VERIFY_FUNCTION的創(chuàng)建

82、腳本內(nèi)容utlpwdmg.sql,供參考。ora10gsecDB /home/oracle$ cat $ORACLE_HOME/rdbms/admin/utlpwdmg.sqlRemRem $Header: utlpwdmg.sql 31-aug-2000.11:00:47 nireland Exp $RemRem utlpwdmg.sqlRemRem  Copyright (c) Oracle Corporation 1996,

83、60;2000. All Rights Reserved.RemRem    NAMERem      utlpwdmg.sql - script. for Default Password Resource LimitsRemRem    DESCRIPTIONRem      This 

84、;is a script. for enabling the password management featuresRem      by setting the default password resource limits.RemRem    NOTESRem      This 

85、file contains a function for minimum checking of passwordRem      complexity. This is more of a sample function that the customerRem      can use

86、 to develop the function for actual complexity checks that theRem      customer wants to make on the new password.RemRem    MODIFIED   (MM/DD/YY)Rem&#

87、160;   nireland    08/31/00 - Improve check for username=password. #1390553Rem    nireland    06/28/00 - Fix null old password test. #1341892Rem  

88、0; asurpur     04/17/97 - Fix for bug479763Rem    asurpur     12/12/96 - Changing the name of password_verify_functionRem    asurpur    

89、; 05/30/96 - New script. for default password managementRem    asurpur     05/30/96 - CreatedRem- This script. sets the default password resource parameters- Th

90、is script. needs to be run to enable the password features.- However the default resource parameters can be changed based- on the need.- A default password complexity

91、0;function is also provided.- This function makes the minimum complexity checks like- the minimum length of the password, password not same as the- username, etc. The use

92、r may enhance this function according to- the need.- This function must be created in SYS schema.- connect sys/<password> as sysdba before running the scriptCREATE OR

93、60;REPLACE FUNCTION verify_function(username varchar2,password varchar2,old_password varchar2)RETURN boolean ISn boolean;m integer;differ integer;isdigit boolean;ischar  boolean;ispunct boolean;digitarray varchar2(20);punctar

94、ray varchar2(25);chararray varchar2(52);BEGINdigitarray:= '0123456789'chararray:= 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'punctarray:='!"#$%&()*+,-/:;<=>?_'- Check if the password is same as&#

95、160;the usernameIF NLS_LOWER(password) = NLS_LOWER(username) THENraise_application_error(-20001, 'Password same as or similar to user');END IF;- Check for the minimum length of the passwo

96、rdIF length(password) < 4 THENraise_application_error(-20002, 'Password length less than 4');END IF;- Check if the password is too simple. A dictionary of words may be- 

97、maintained and a check may be made so as not to allow the words- that are too simple for the password.IF NLS_LOWER(password) IN ('welcome', 'database', 'ac

98、count', 'user', 'password', 'oracle', 'computer', 'abcd') THENraise_application_error(-20002, 'Password too simple');END IF;- Check if the password contains at lea

99、st one letter, one digit and one- punctuation mark.- 1. Check for the digitisdigit:=FALSE;m := length(password);FOR i IN 1.10 LOOPFOR j IN 1.m LOOPIF substr(password,j,1) =

100、60;substr(digitarray,i,1) THENisdigit:=TRUE;GOTO findchar;END IF;END LOOP;END LOOP;IF isdigit = FALSE THENraise_application_error(-20003, 'Password should contain at least one digit, one character and&

101、#160;one punctuation');END IF;- 2. Check for the character<<findchar>>ischar:=FALSE;FOR i IN 1.length(chararray) LOOPFOR j IN 1.m LOOPIF substr(password,j,1) = substr(chararray,i,1) THENisc

102、har:=TRUE;GOTO findpunct;END IF;END LOOP;END LOOP;IF ischar = FALSE THENraise_application_error(-20003, 'Password should contain at least one digit, one character and one punctuation');END IF;- 3. Check for the punctuation<<findp

溫馨提示

  • 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

提交評論