91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Oracle密碼復雜度

發布時間:2020-08-14 17:28:58 來源:ITPUB博客 閱讀:185 作者:cqvienet 欄目:關系型數據庫
sqlplus / as sysdba

SQL*Plus: Release 11.2.0.3.0 Production on 星期一 3月 25 22:53:24 2013

Copyright (c) 1982, 2011, Oracle.  All rights reserved.


連接到:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> @?/rdbms/admin/utlpwdmg.sql


轉自:http://blog.itpub.net/23135684/viewspace-757083/

或者自定義腳本
-----------------------------------腳本如下--------------------------------------------
CREATE OR REPLACE FUNCTION PASSWORD_VERIFY_FUNCTION 
(
  username varchar2,  
  password varchar2,  
  old_password varchar2)  
  
  RETURN boolean IS   
   n boolean;  
   m integer;  
   differ integer;  
   isdigit boolean;  
   ischar  boolean;  
   ispunct boolean;  
   db_name varchar2(40);  
   digitarray varchar2(20);  
   punctarray varchar2(25);  
   specialarray varchar2(14);  
   chararray varchar2(52);
   i_char varchar2(10);  
   simple_password varchar2(10);  
   reverse_user varchar2(32);  
  
BEGIN   
   digitarray:= '0123456789';  
   chararray:= 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';  
    specialarray:= '~!@#$%^&*()_<>'; 
  
   -- 校驗密碼長度至少為8位  
   IF length(password) < 8 THEN  
      raise_application_error(-20001, 'Password length less than 8');  
   END IF;  
  
  
   -- 校驗密碼是否和用戶名相同  
   IF NLS_LOWER(password) = NLS_LOWER(username) THEN  
     raise_application_error(-20002, 'Password same as or similar to user');  
   END IF;  
   FOR i IN 1..100 LOOP  
      i_char := to_char(i);  
      if NLS_LOWER(username)|| i_char = NLS_LOWER(password) THEN  
        raise_application_error(-20005, 'Password same as or similar to user name ');  
      END IF;  
    END LOOP;  
  
   -- 校驗密碼是不是用戶名的反序  
     
   FOR i in REVERSE 1..length(username) LOOP  
     reverse_user := reverse_user || substr(username, i, 1);  
   END LOOP;  
   IF NLS_LOWER(password) = NLS_LOWER(reverse_user) THEN  
     raise_application_error(-20003, 'Password same as username reversed');  
   END IF;  
  
   -- 校驗密碼是否是服務名  
   select name into db_name from sys.v$database;  
   if NLS_LOWER(db_name) = NLS_LOWER(password) THEN  
      raise_application_error(-20004, 'Password same as or similar to server name');  
   END IF;  
   FOR i IN 1..100 LOOP  
      i_char := to_char(i);  
      if NLS_LOWER(db_name)|| i_char = NLS_LOWER(password) THEN  
        raise_application_error(-20005, 'Password same as or similar to server name ');  
      END IF;  
    END LOOP;  
  
   -- 檢查用戶密碼是否過于簡單,  
   -- 檢查密碼是否有列表中的關鍵字  
   -- 是否存在弱口令  
   IF NLS_LOWER(password) IN ('welcome1', 'database1', 'account1', 'user1234', 'password1', 'oracle123', 'computer1', 'abcdefg1', 'change_on_install') THEN  
      raise_application_error(-20006, 'Password too simple');  
   END IF;  
  
   -- 檢查密碼是否為oracle  
    simple_password := 'oracle';  
    FOR i IN 1..100 LOOP  
      i_char := to_char(i);  
      if simple_password || i_char = NLS_LOWER(password) THEN  
        raise_application_error(-20007, 'Password too simple ');  
      END IF;  
    END LOOP;  
  
   -- 檢驗密碼至少包含至少一個字母,一個數字 ,一個特殊字符  
   -- 1. 校驗數字  
   isdigit:=FALSE;  
   m := length(password);  
   FOR i IN 1..10 LOOP   
      FOR j IN 1..m LOOP   
         IF substr(password,j,1) = substr(digitarray,i,1) THEN  
            isdigit:=TRUE;  
             GOTO findchar;  
         END IF;  
      END LOOP;  
   END LOOP;  
  
   IF isdigit = FALSE THEN  
      raise_application_error(-20008, 'Password must contain at least one digit, one character');  
   END IF;  
   -- 2. 檢驗字符  
   <<findchar>>  
   ischar:=FALSE;  
   FOR i IN 1..length(chararray) LOOP   
      FOR j IN 1..m LOOP   
         IF substr(password,j,1) = substr(chararray,i,1) THEN  
            ischar:=TRUE;  
             GOTO endsearch;  
         END IF;  
      END LOOP;  
   END LOOP;  
   IF ischar = FALSE THEN  
      raise_application_error(-20009, 'Password must contain at least one \  
              digit, and one character');  
   END IF;  
  
  
    -- 3. 檢驗特殊字符
   <<findchar>>  
   ischar:=FALSE;  
   FOR i IN 1..length(specialarray) LOOP   
      FOR j IN 1..m LOOP   
         IF substr(password,j,1) = substr(specialarray,i,1) THEN  
            ischar:=TRUE;  
             GOTO endsearch;  
         END IF;  
      END LOOP;  
   END LOOP;  
   IF ischar = FALSE THEN  
      raise_application_error(-20009, 'Password must contain at least one special_char');  
   END IF;  
  
  
   <<endsearch>>  
   --檢驗密碼和上一個密碼至少有三個不同字符  
   --  
   IF old_password IS NOT NULL THEN  
     differ := length(old_password) - length(password);  
  
     differ := abs(differ);  
     IF differ < 3 THEN  
       IF length(password) < length(old_password) THEN  
         m := length(password);  
       ELSE  
         m := length(old_password);  
       END IF;  
  
       FOR i IN 1..m LOOP  
         IF substr(password,i,1) != substr(old_password,i,1) THEN  
           differ := differ + 1;  
         END IF;  
       END LOOP;  
  
       IF differ < 3 THEN  
         raise_application_error(-20011, 'Password should differ from the \  
            old password by at least 3 characters');  
       END IF;  
     END IF;  
   END IF;  
   -- Everything is fine; return TRUE ;     
   RETURN(TRUE);  
END;  



在測試環境學習oracle,出現用戶密碼過期的問題,更改密碼提示驗證未通過,因為為測試環境,為方便期間,不需要經常修改密碼,在此發現profile的使用方法,記錄如下。
  SQL> SELECT * FROM dba_profiles ;
  查看用戶所屬的 profile ,一般為DEFAULT
  SQL>select * from dba_profiles where resource_type='PASSWORD';
  SQL> alter user lh identified by lh;
  alter user lh identified by lh
  ORA-28003: password verification for the specified password failed
  ORA-20001: Password same as or similar to user
  取消密碼管理:
  SQL>alter profile DEFAULT limit unlimited;
  如:
  SQL>alter profile DEFAULT limit password_reuse_time unlimited;
  停止密碼檢驗函數:
  SQL>alter profile DEFAULT limit password_verify_function null;
  創建 用戶 專用 profile:
  CREATE PROFILE test LIMIT
  SESSIONS_PER_USER       UNLIMITED
  CPU_PER_SESSION          UNLIMITED
  CPU_PER_CALL             3000
  CONNECT_TIME             45
  LOGICAL_READS_PER_SESSION   DEFAULT
  LOGICAL_READS_PER_CALL     1000
  PRIVATE_SGA             15K
  COMPOSITE_LIMIT          5000000;
  如需更改:
  SQL>alter profile test limit PASSWORD_LIFE_TIME 60 ;
  更改用戶profile
  SQL>alter user scott profile test;
  ****************************************************************
  Oracle數據庫用戶密碼過期處理
  1、sqlplus 用戶/密碼@數據庫服務 as sysdba;
  2、select username,profile from dba_users;
  3、select * from dba_profiles s where s.profile='default' and resource_name='password_life_time';
  4、alter profile default limit password_life_time unlimited;
  如果用戶已經被鎖定,則執行5,否則不用執行5;
  5、alter user 用戶 identified by 密碼 account unlock;

//////////////////////////////////////

/*查看用戶所屬的 profile,一般為DEFAULT*/
SELECT * FROM dba_profiles;
select * from dba_profiles where resource_type='PASSWORD' and profile=upper('PROFILE1');
/*停止密碼檢驗函數:*/
alter profile PROFILE1 limit PASSWORD_VERIFY_FUNCTION null;

alter user yufeng profile DEFAULT;

alter profile PROFILE1 limit PASSWORD_LIFE_TIME 60 ;

alter profile PROFILE1 limit password_life_time unlimited;
/*如果用戶已經被鎖定,則執行下面SQL,否則不用執行;*/
alter user 用戶 identified by 密碼 account unlock;

***********************************************************************************************

=》Oracle密碼復雜度設置(Oracle_Password_Complexity)
 
一、Oracle_Password_Complexity:
 
    SQL> alter system set resource_limit = true;
 
    SQL> @ $ORACLE_HOME/RDBMS/ADMIN/utlpwdmg.sql → [verify_function|verify_function_11G]
 
    SQL> alter profile default limit password_verify_function verify_function;
 
    # 取消Oracle密碼復雜度檢查:
    SQL> alter profile default limit password_verify_function null;
 
    SQL> SELECT profile,resource_type,resource_name,limit FROM dba_profiles WHERE resource_type='PASSWORD' AND profile='DEFAULT';
 
   1.FAILED_LOGIN_ATTEMPTS: 用戶在登錄嘗試失敗n次后被鎖定。
 
   2.PASSWORD_LOCK_TIME: 登錄嘗試失敗達到指定次數,用戶鎖定時長,以“Day”為單位。
 
   3.PASSWORD_LIFE_TIME: 用戶口令的生命周期。
 
   4.PASSWORD_GRACE_TIME: 表示用戶口令使用時間超過其生命周期后,可以延續使用的天數,并且可延續時間內登錄會有相應口令即將過期的提示。
 
   5.PASSWORD_REUSE_TIME: 指定了口令不能重用前的天數。
 
   6.PASSWORD_REUSE_MAX: 在達到PASSWORD_REUSE_TIME指定時間后,要再次使用同一口令前必須改變的次數。
 
   如:PASSWORD_REUSE_TIME=30,PASSWORD_REUSE_MAX=10,用戶可以在30天以后重用該口令,要求口令必須被改變超過10次。
 
   7.PASSWORD_VERIFY_FUNCTION: Oracle允許將復雜的PL/SQL密碼驗證腳本做為參數傳遞給PASSWORD_VERIFY_FUNCTION。并且其自己提供了一個默認的腳本,但是用戶可以創建自己的驗證規則或使用第三方軟件驗證。
 
   8.Password Verify Function:
 
   When you create a password verify function for verifying the user password, this function can verify the following password characteristics:
 
   1.The minimum number of characters for the password.
 
   2.The characters that the password must contain, such as when a password should contain a specific number of numeric, alphabetic or special characters.  
 
   3.Whether or not the password can be the same as the username.Whether or not the new password can be similar to the previous password.
 
  Oracle 11g數據庫密碼區分大小寫的設置 → SEC_CASE_SENSITIVE_LOGON = TRUE.
向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

安义县| 潼关县| 涞源县| 周口市| 绵竹市| 凤阳县| 长治市| 海淀区| 平武县| 兴宁市| 合肥市| 宜宾市| 新建县| 赞皇县| 潍坊市| 观塘区| 九江市| 九龙县| 卓尼县| 阿巴嘎旗| 伊川县| 定结县| 扶余县| 聂荣县| 育儿| 突泉县| 海兴县| 建昌县| 崇文区| 灵台县| 永寿县| 定安县| 文成县| 全南县| 营口市| 温宿县| 驻马店市| 襄垣县| 宜昌市| 合作市| 梁平县|