| 版本 | 密碼特性 | 安全等級 |
| 10g 及以前 | DES-based, 不分大小寫, 無 Salt | 極弱 |
| 11g | SHA-1 + Salt, 分大小寫, 支援 10g 相容模式 | 中等 |
| 12c | PBKDF2 + SHA-512, 可配置迭代次數 | 強 |
| 18c/19c/21c | 支援 SCRAM-SHA-256/512, 純密碼驗證不傳輸雜湊 | 企業級 |
11g 關鍵參數控制
-- 查看密碼版本
SELECT USERNAME, PASSWORD_VERSIONS FROM DBA_USERS;
-- 10G 11G 12C 顯示支援的雜湊版本
-- 強制區分大小寫 (11g 預設 TRUE)
ALTER SYSTEM SET SEC_CASE_SENSITIVE_LOGON = TRUE SCOPE=BOTH;
-- 僅允許 11G/12C 版本雜湊 (停用 10G 相容)
ALTER SYSTEM SET SQLNET.ALLOWED_LOGON_VERSION_SERVER = 11 SCOPE=SPFILE;
資料庫連結 明文密碼風險
-- DB Link 密碼以加密形式儲存但可逆向還原
SELECT * FROM DBA_DB_LINKS;
-- PASSWORD 欄位為加密字串,非單向雜湊
風險:具 DBA 權限者可解密取得遠端資料庫密碼。建議:使用外部認證 (Kerberos/SSL) 或 12c+ Proxy Authentication 替代硬編碼密碼。
企業級防護策略
- 密碼複雜度驗證:啟用 Profile
PASSWORD_VERIFY_FUNCTION (預設 VERIFY_FUNCTION_11G)
- 定期稽核:排程執行 Checkpwd/orabf 掃描弱密碼
- 帳號鎖定策略:
FAILED_LOGIN_ATTEMPTS, PASSWORD_LOCK_TIME
- 密碼生命週期:
PASSWORD_LIFE_TIME, PASSWORD_GRACE_TIME
- 審計追蹤:啟用
AUDIT_TRAIL=DB,EXTENDED 記錄登入嘗試
- 網路加密:配置 SQLNET.ORA
SQLNET.ENCRYPTION_SERVER=REQUIRED
合規檢查查詢
-- 弱密碼掃描 (11g+ 區分大小寫)
SELECT USERNAME, PASSWORD_VERSIONS, ACCOUNT_STATUS
FROM DBA_USERS
WHERE PASSWORD_VERSIONS LIKE '%10G%' -- 仍使用舊版雜湊
OR ACCOUNT_STATUS != 'OPEN';
-- 密碼未變更超過 180 天
SELECT USERNAME,
TO_CHAR(LAST_LOGIN, 'YYYY-MM-DD') LAST_LOGIN,
TO_CHAR(EXPIRY_DATE, 'YYYY-MM-DD') EXPIRY_DATE
FROM DBA_USERS
WHERE EXPIRY_DATE < SYSDATE - 180;
- 上一篇文章: Oracle 10g 閃回恢復區完整配置指南:Flash Recovery Area 架構與管理
- 下一篇文章: Oracle 單行函數完整參考手冊:字串、數值、日期、轉換、通用函數
Copyright ©
程式碼之家 All Rights Reserved