Oracle11g新特性:dba_users不再顯示密碼
我們知道,oracle使用者的密碼是加密後儲存在資料字典中的,可以透過dba_users檢視檢視到加密後的密碼。雖然密碼是經過加密儲存的,但是從資訊保安的角度來看,暴露的資訊越多越不安全,所以即使是加密後的密碼洩漏,也可能造成很嚴重的安全問題。所以,在Oracle11g中,除了可以選擇加強的密碼演算法,更加嚴格的密碼強度,還有一點加強,就是不再在dba_uses.password中顯示加密後的密碼了。
Oracle10g查詢dba_users的結果
USERNAME PASSWORD
------------------------------ ------------------------------
SYS 7D55A4DE0D9A4BEB
SYSTEM ADCB2935EDDF29D4
SOE 552DCAEDD0062495
OUTLN 4A3BA55E08595C81
EXFSYS 66F4EF5650C20355
DBSNMP E066D214D5421CCC
WMSYS 7C9BA362F8314299
OLAPSYS 3FB8EF9DB538647C
TSMSYS 3DF26A8B17D0F29F
DIP CE4A36B8E06CA59C
Oracle11g查詢dba_users的結果
USERNAME PASSWORD
-------------------- ------------------------------
SYS
SYSTEM
NING
TEST
OUTLN
DBSNMP
WMSYS
TSMSYS
DIP
Oracle11g在使用者安全性方面的加強,還有:
密碼區分大小寫
可以透過初始化引數sec_case_sensitive_logon來控制密碼是否大小寫敏感,預設TRUE
密碼複雜性檢查
透過執行以下指令碼生成密碼複雜性檢查函式verify_function_11G
@$ORACLE_HOME/RDBMS/ADMIN/utlpwdmg.sql
然後設定profile使用該函式來檢查密碼即可
ALTER PROFILE default PASSWORD_VERIFY_FUNCTION verify_function_11G;
強度更高的Hash加密演算法
Oracle11g採用安全雜湊演算法(Secure Hash Algorithm)SHA-1做為新的加密演算法,但貌似這個演算法已經開始了。
引自:http://space.itpub.net/24005010/viewspace-711795
ORACLE資料庫使用者名稱密碼被加密過我們看不懂,因此很多時候我們在檢查測試使用者名稱和密碼相同的情況會採用先從dba_users檢視取使用者password值
SQL> select username,password from dba_users;
USERNAME PASSWORD
------------------------------ ------------------------------
YYJ 27317D6A1D4800BD
ASSET 733CCCA926CC3319
SCOTT CDC57F9E62A38D03
TESTMZH F32F644F6D2FF07B
BI EB32A21961929D0C
PM C7A235E6D2AF6018
IX 885DA62CD26FED7E
SH 54B253CBBAAA8C48
OE D1A2DFC623FDA40A
HR 4C6D73C3E8B0F0DA
例如yyj使用者的加密密碼為27317D6A1D4800BD,先將這個值記錄下來=a
之後我們會修改使用者密碼改為相同的,alter user yyj identified by yyj;
此時我們再從dba_users裡查詢password加密密碼b,如果a=b,那麼就認為使用者名稱密碼相同
如果a≠b,認為密碼與使用者名稱不相同,賬戶安全。此時再將密碼改回a。
語法與明碼改密碼略有不同
alter user yyj identified by values '27317D6A1D4800BD';
然而在11gR2的環境中,這種方法會出問題,因為11g的dba_users檢視中的password一般情況下是為空的(從該檢視的相關語句可以看出當使用者被建立為全域性或外部認證時password才有加密值)。
SQL> select username,password from dba_users;
USERNAME PASSWORD
------------------------------ ------------------------------
MGMT_VIEW
SYS
SYSTEM
DBSNMP
SYSMAN
YYJ
OUTLN
APPQOSSYS
WMSYS
DIP
ORACLE_OCM
這種情況下很顯然會將密碼置為空。在儲存過程中如果我們強行將密碼設為NULL,會報600的錯誤,同時密碼被置於未知。在10g中能將密碼設為空,但連線密碼未知
SQL> alter user yyj identified by values '';
alter user yyj identified by values ''
*
ERROR at line 1:
ORA-00600: internal error code, arguments: [kzsviver:1], [], [], [], [], [],
[], [], [], [], [], []
當然,如果真要用上述方法來驗證密碼的話,也可以從user$裡查到相關加密密碼
SQL> select name,password from user$ where name in (select username from dba_users);
NAME PASSWORD
------------------------------ ------------------------------
MGMT_VIEW CBE59D420599A775
SYS 8A8F025737A9097A
SYSTEM 2D594E86F93B17A1
DBSNMP FFF45BB2C0C327EC
SYSMAN 2CA614501F09FCCC
YYJ 27317D6A1D4800BD
OUTLN 4A3BA55E08595C81
APPQOSSYS 519D632B7EE7F63A
WMSYS 7C9BA362F8314299
DIP CE4A36B8E06CA59C
ORACLE_OCM 5A2E026A9157958C
事實上dba_users就是結合user$等相關基表建立的檢視
從dba_uses檢視的相關語句可以看出當使用者被建立為全域性或外部認證時password才有加密值,而10g中dba_users的password列完全取值與user$的password列值
相關SQL
10g:
select u.name, u.user#, u.password,
m.status,
decode(u.astatus, 4, u.ltime,
5, u.ltime,
6, u.ltime,
8, u.ltime,
9, u.ltime,
10, u.ltime, to_date(NULL)),
decode(u.astatus,
1, u.exptime,
2, u.exptime,
5, u.exptime,
6, u.exptime,
9, u.exptime,
10, u.exptime,
decode(u.ptime, '', to_date(NULL),
decode(pr.limit#, 2147483647, to_date(NULL),
decode(pr.limit#, 0,
decode(dp.limit#, 2147483647, to_date(NULL), u.ptime +
dp.limit#/86400),
u.ptime + pr.limit#/86400)))),
dts.name, tts.name, u.ctime, p.name,
nvl(cgm.consumer_group, 'DEFAULT_CONSUMER_GROUP'),
u.ext_username
from sys.user$ u left outer join sys.resource_group_mapping$ cgm
on (cgm.attribute = 'ORACLE_USER' and cgm.status = 'ACTIVE' and
cgm.value = u.name),
sys.ts$ dts, sys.ts$ tts, sys.profname$ p,
sys.user_astatus_map m, sys.profile$ pr, sys.profile$ dp
where u.datats# = dts.ts#
and u.resource$ = p.profile#
and u.tempts# = tts.ts#
and u.astatus = m.status#
and u.type# = 1
and u.resource$ = pr.profile#
and dp.profile# = 0
and dp.type#=1
and dp.resource#=1
and pr.type# = 1
and pr.resource# = 1
11g:
select u.name, u.user#,
decode(u.password, 'GLOBAL', u.password,
'EXTERNAL', u.password,
NULL),
m.status,
decode(u.astatus, 4, u.ltime,
5, u.ltime,
6, u.ltime,
8, u.ltime,
9, u.ltime,
10, u.ltime, to_date(NULL)),
decode(u.astatus,
1, u.exptime,
2, u.exptime,
5, u.exptime,
6, u.exptime,
9, u.exptime,
10, u.exptime,
decode(u.ptime, '', to_date(NULL),
decode(pr.limit#, 2147483647, to_date(NULL),
decode(pr.limit#, 0,
decode(dp.limit#, 2147483647, to_date(NULL), u.ptime +
dp.limit#/86400),
u.ptime + pr.limit#/86400)))),
dts.name, tts.name, u.ctime, p.name,
nvl(cgm.consumer_group, 'DEFAULT_CONSUMER_GROUP'),
u.ext_username,
decode(length(u.password),16,'10G ',NULL)||NVL2(u.spare4, '11G ' ,NULL),
decode(bitand(u.spare1, 16),
16, 'Y',
'N'),
decode(u.password, 'GLOBAL', 'GLOBAL',
'EXTERNAL', 'EXTERNAL',
'PASSWORD')
from sys.user$ u left outer join sys.resource_group_mapping$ cgm
on (cgm.attribute = 'ORACLE_USER' and cgm.status = 'ACTIVE' and
cgm.value = u.name),
sys.ts$ dts, sys.ts$ tts, sys.profname$ p,
sys.user_astatus_map m, sys.profile$ pr, sys.profile$ dp
where u.datats# = dts.ts#
and u.resource$ = p.profile#
and u.tempts# = tts.ts#
and u.astatus = m.status#
and u.type# = 1
and u.resource$ = pr.profile#
and dp.profile# = 0
and dp.type#=1
and dp.resource#=1
and pr.type# = 1
and pr.resource# = 1
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/23141985/viewspace-731442/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle11g新特性——密碼區分大小寫Oracle密碼
- 隱藏密碼?顯示密碼?密碼
- Oracle11g 特性——密碼區分大小寫Oracle密碼
- 顯示密碼編輯框中的密碼 (轉)密碼
- 明文顯示密碼效果詳解密碼
- Oracle11g新特性之editionOracle
- jQuery 顯示 input 輸入的密碼!jQuery密碼
- 【新特性速遞】指定提示資訊的顯示位置(ToolTipPosition)
- 11G 新特性:密碼大小寫策略密碼
- 點選密碼框明文和密文顯示切換密碼
- Android 眼睛 顯示隱藏密碼(ImageView)Android密碼View
- EditText設定密碼隱藏和顯示密碼
- 模擬輸入密碼時顯示‘*’,然後將密碼輸出密碼
- Hotmail不再接受長密碼AI密碼
- oracle11g新特性之--虛擬列Oracle
- Oracle11g新特性點評之RMANOracle
- Oracle11g新特性之只讀表Oracle
- Oracle11g新特性:SQL Result Cache [zt]OracleSQL
- oracle11g flashback archive feature新特性OracleHive
- 豆瓣電影更改短評顯示機制 不再顯示全部短評
- 點選實現顯示密碼效果程式碼例項密碼
- 直播商城原始碼,密碼輸入框自定義顯示隱藏圖示原始碼密碼
- 【新特性速遞】表格列的貨幣柵格化顯示
- 【11gR2新特性】密碼區分大小寫密碼
- oracle 11g新特性之密碼大小寫敏感Oracle密碼
- ORACLE11g 不再提供 BBEDOracle
- 【RMAN】Oracle11g備份恢復新特性Oracle
- oracle11g 的Data Guard方面的新特性Oracle
- ZT:資料庫Oracle11g新特性RMAN資料庫Oracle
- 直播平臺原始碼,input密碼框顯示與隱藏原始碼密碼
- 搭建直播平臺,顯示隱藏密碼,眼睛特效密碼特效
- 快應用如何實現密碼明文和密文切換顯示密碼
- oracle11g忘記sys密碼Oracle密碼
- java 在控制檯上輸入密碼時,密碼不顯示在控制檯上Java密碼
- Oracle11g新特性 - 快速線上新增not null欄位OracleNull
- Oracle11g新特性——LOB型別功能增強Oracle型別
- NordPass:資料顯示全球最常用的密碼是“password”密碼
- 如何在終端輸入密碼時顯示星號密碼