【11g】使用SEC_CASE_SENSITIVE_LOGON引數控制密碼大小寫敏感性

secooler發表於2009-12-08
在Oracle的11g之前的版本中密碼是不區分大小寫的(使用雙引號強制除外)。在Oracle的11g版本中對此有所增強。從此密碼有了大小寫的區分,這個大小寫敏感特性是透過SEC_CASE_SENSITIVE_LOGON引數來控制的。簡單探索一下。

1.建立Secooler使用者,注意它的密碼同時包含大寫字母和小寫字母。
sys@ora11gR2> create user Secooler identified by Secooler;

User created.

sys@ora11gR2> grant connect to secooler;

Grant succeeded.

從這個授權成功上可見,使用者名稱仍然不區分大小寫。

2.嘗試使用全小寫的密碼登陸
sys@ora11gR2> conn secooler/secooler
ERROR:
ORA-01017: invalid username/password; logon denied


Warning: You are no longer connected to ORACLE.

報錯,顯然不行,此時大小寫敏感性檢查已經啟用。

3.使用“正確”的密碼“Secooler”進行登陸,成功。
sys@ora11gR2> conn secooler/Secooler
Connected.
secooler@ora11gR2> show user;
USER is "SECOOLER"

4.看一下“幕後黑手”SEC_CASE_SENSITIVE_LOGON引數的描述
sys@secooler> show parameter sec_case_sensitive_logon

NAME                       TYPE       VALUE
-------------------------- ---------- -----------
sec_case_sensitive_logon   boolean    TRUE

sys@ora11gR2> select a.ksppinm name,b.ksppstvl value,a.ksppdesc description
  2    from x$ksppi a,x$ksppcv b
  3   where a.indx = b.indx
  4     and a.ksppinm = 'sec_case_sensitive_logon'
  5  /

NAME                      VALUE  DESCRIPTION
------------------------- ------ -----------------------------------------
sec_case_sensitive_logon  TRUE   case sensitive password enabled for logon

該引數預設值是“TRUE”,因此,預設情況下密碼大小寫是敏感的。

5.將SEC_CASE_SENSITIVE_LOGON引數修改為“FALSE”
sys@ora11gR2> alter system set sec_case_sensitive_logon = FALSE;

System altered.

6.此時系統將不對密碼做大小寫敏感驗證
sys@ora11gR2> conn secooler/secooler
Connected.

7.即使修改SEC_CASE_SENSITIVE_LOGON引數為“FALSE”,在系統中記錄的也是區分大小寫的形式,只是不進行驗證而已。
1)建立另外一個使用者sec,並授權
sys@ora11gR2> create user sec identified by SeC;

User created.

sys@ora11gR2> grant connect to sec;

Grant succeeded.

2)在SEC_CASE_SENSITIVE_LOGON引數為“FALSE”時嘗試連線,成功,因為此時不進行校驗。
sys@ora11gR2> conn sec/sec
Connected.

3)恢復SEC_CASE_SENSITIVE_LOGON引數為“TRUE”,再次嘗試連線將會失敗。
sec@ora11gR2> conn / as sysdba
Connected.
sys@ora11gR2> alter system set sec_case_sensitive_logon = TRUE;

System altered.

sys@ora11gR2> conn sec/sec
ERROR:
ORA-01017: invalid username/password; logon denied


Warning: You are no longer connected to ORACLE.

4)使用“正確”的密碼進行嘗試,成功。
sys@ora11gR2> conn sec/SeC
Connected.

5)結論
11g環境中密碼是以區分大小寫的形式進行儲存的。

8.Oracle 11g文件參考(11gR1和11gR2內容相同)

SEC_CASE_SENSITIVE_LOGON

Property Description
Parameter type Boolean
Default value true
Modifiable ALTER SYSTEM
Range of values true | false
Basic No

SEC_CASE_SENSITIVE_LOGON enables or disables password case sensitivity in the database.

Values:

  • true

    Database logon passwords are case sensitive.

  • false

    Database logon passwords are not case sensitive.


9.小結
11g的這個密碼大小寫敏感的新特性對於提升資料庫的安全性有很大的幫助,同時也增加了密碼的排列組合數目,從此“Secooler”和“secooler”可以作為兩個不同使用者的密碼了。從這個小小的改動上可以看出Oracle諸多人性化改變無處不在。

Good luck.

secooler
09.12.08

-- The End --

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/519536/viewspace-621998/,如需轉載,請註明出處,否則將追究法律責任。

相關文章