亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

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

巴彦淖尔市| 伊金霍洛旗| 都匀市| 墨玉县| 高阳县| 巫山县| 孟州市| 肃宁县| 特克斯县| 十堰市| 汤阴县| 黎城县| 绿春县| 锦屏县| 巨野县| 绥中县| 荣昌县| 兴隆县| 伊吾县| 长子县| 灯塔市| 乐清市| 许昌县| 万安县| 石城县| 仁布县| 克山县| 赞皇县| 鸡东县| 宕昌县| 江川县| 邹平县| 大厂| 古蔺县| 江西省| 海淀区| 栾城县| 年辖:市辖区| 玛曲县| 仪征市| 双江|