Profile設定高標準密碼複雜度的方法
Profile是Oracle提供的一種針對使用者資源使用和密碼管理的策略配置。藉助Profile,可以實現特定使用者資源上的限制和密碼管理規則的應用。在實際的應用中,Profile可以幫助我們實現很多應用層面比較困難實現的需求。預設情況下,使用者連線資料庫,形成會話,使用CPU資源和記憶體資源是沒有限制的。在一些應用併發量很大,特別是多個應用部署在同一個資料庫伺服器上的時候,依據應用對企業重要程度的部分,CPU和記憶體資源的分配一定是有所側重的。 此外,使用者的密碼管理,可以是一個比較複雜的工作。比如,使用者鎖定之後,多長時間被自動釋放、密碼生命週期、登入嘗試次數等等。這兩個方面的問題,都可以藉助Profile去解決。Profile相當於一個命名的安全策略集合,其中規定了資源使用的限制和密碼使用的規則。Profile定義之後,是可以應用到每個使用者上,對每個使用者的安全活動進行限制。
PROFILE RESOURCE_NAME RESOURCE LIMIT
---------- -------------------------------- -------- -----------------
DEFAULT COMPOSITE_LIMIT KERNEL UNLIMITED
DEFAULT SESSIONS_PER_USER KERNEL UNLIMITED
DEFAULT CPU_PER_SESSION KERNEL UNLIMITED
DEFAULT CPU_PER_CALL KERNEL UNLIMITED
DEFAULT LOGICAL_READS_PER_SESSION KERNEL UNLIMITED
DEFAULT LOGICAL_READS_PER_CALL KERNEL UNLIMITED
DEFAULT IDLE_TIME KERNEL UNLIMITED
DEFAULT CONNECT_TIME KERNEL UNLIMITED
DEFAULT PRIVATE_SGA KERNEL UNLIMITED
DEFAULT FAILED_LOGIN_ATTEMPTS PASSWORD 10
DEFAULT PASSWORD_LIFE_TIME PASSWORD UNLIMITED
DEFAULT PASSWORD_REUSE_TIME PASSWORD UNLIMITED
DEFAULT PASSWORD_REUSE_MAX PASSWORD UNLIMITED
DEFAULT PASSWORD_VERIFY_FUNCTION PASSWORD NULL
DEFAULT PASSWORD_LOCK_TIME PASSWORD UNLIMITED
DEFAULT PASSWORD_GRACE_TIME PASSWORD UNLIMITED
上面標紅的專案為資料庫使用者密碼複雜度要求函式,不同企業根據自身規章制度,對資料庫使用者密碼複雜度要求不一,需要根據自身要求編寫各自的複雜度函式,以下分享筆者所使用的複雜度限制函式原始碼,該函式限制策略為至少12位,且同時包含數字、字母和特殊字元。
CREATE OR REPLACE FUNCTION verify_function_11G_dx
(username varchar2,
password varchar2,
old_password varchar2)
RETURN boolean IS
n boolean;
m integer;
differ integer;
isdigit boolean;
ischar boolean;
issign boolean;
ispunct boolean;
db_name varchar2(40);
digitarray varchar2(20);
punctarray varchar2(25);
chararray varchar2(52);
signarray varchar2(50);
i_char varchar2(10);
simple_password varchar2(10);
reverse_user varchar2(32);
BEGIN
digitarray:= '0123456789';
chararray:= 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
signarray:= '@!#$%^&*()_-=+*,.?;~`';
-- Check for the minimum length of the password
IF length(password) < 12 THEN
raise_application_error(-20001, 'Password length less than 12');
END IF;
-- Check if the password is same as the username or username(1-100)
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;
-- Check if the password is same as the username reversed
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;
-- Check if the password is the same as server name and or servername(1-100)
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;
-- Check if the password is too simple. A dictionary of words may be
-- 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 ('welcome1', 'database1', 'account1', 'user1234', 'password1', 'oracle123', 'computer1', 'abcdefg1', 'change_on_install','123456','oracle') THEN
raise_application_error(-20006, 'Password too simple');
END IF;
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69994801/viewspace-2757117/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 分享Profile設定高標準密碼複雜度的方法密碼複雜度
- Linux 如何設定密碼複雜度?Linux密碼複雜度
- 【PROFILE】Oracle11g密碼複雜度說明Oracle密碼複雜度
- Oracle EBS 資料庫密碼複雜度設定Oracle資料庫密碼複雜度
- GitLab 中文版如何設定密碼長度、複雜度以及過期時間?Gitlab密碼複雜度
- 密碼的複雜化密碼
- Linux 生成複雜密碼並且檢查密碼強度Linux密碼
- Javascript校驗密碼複雜度的正規表示式JavaScript密碼複雜度
- 如何在 Linux 生成複雜密碼並且檢查密碼強度Linux密碼
- 3種生成高強度密碼的方法密碼
- 降低程式碼的圈複雜度——複雜程式碼的解決之道複雜度
- DDD之理解複雜度、尊重複雜度、掌控複雜度複雜度
- 淺析程式碼圈複雜度及認知複雜度複雜度
- 常用的時間複雜度分析方法時間複雜度
- Linux系統自動隨機生成複雜密碼方法Linux隨機密碼
- 複雜度分析的套路及常見的複雜度複雜度
- Linux設定口令複雜度和口令定期更換策略Linux複雜度
- 藍芽怎麼設定密碼不讓人連線 藍芽設定密碼的方法藍芽密碼
- 重構指標之如何監控程式碼圈複雜度指標複雜度
- 電腦鎖屏密碼怎麼設定 win10電腦休眠密碼設定方法設定密碼Win10
- oracle 開啟複雜密碼驗證Oracle密碼
- win10設定cmos密碼的方法_win10電腦怎麼設定cmos密碼Win10密碼
- 怎麼設定電腦鎖屏密碼 設定電腦鎖屏密碼的操作方法密碼
- 時間複雜度跟空間複雜度時間複雜度
- 時間複雜度與空間複雜度時間複雜度
- 時間複雜度和空間複雜度時間複雜度
- Profile標準化資料庫管理資料庫
- 網路模型複雜度計算方法模型複雜度
- win10資料夾如何設定密碼 win10資料夾設定密碼的方法Win10密碼
- 複雜度分析複雜度
- win10設定開機登入密碼的方法_win10怎樣設定開機密碼Win10密碼
- 膝上型電腦怎麼設定密碼 膝上型電腦設定密碼的方法介紹密碼
- 使用Profile標準化資料庫管理資料庫
- 時間複雜度O(n)和空間複雜度時間複雜度
- 相親交友原始碼開發,演算法的定義及複雜度分析原始碼演算法複雜度
- win10取消pin登入密碼的設定方法Win10密碼
- 《魔獸世界》中日漸複雜的死亡設定
- win10 設定指紋密碼方法 win10電腦怎麼設定指紋密碼Win10密碼