天天看點

使用SEC_CASE_SENSITIVE_LOGON參數控制密碼大小寫敏感性

  在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.此時系統将不對密碼做大小寫敏感驗證

7.即使修改SEC_CASE_SENSITIVE_LOGON參數為“FALSE”,在系統中記錄的也是區分大小寫的形式,隻是不進行驗證而已。

1)建立另外一個使用者sec,并授權

sys@ora11gR2> create user sec identified by SeC;

sys@ora11gR2> grant connect to sec;

2)在SEC_CASE_SENSITIVE_LOGON參數為“FALSE”時嘗試連接配接,成功,因為此時不進行校驗。

sys@ora11gR2> conn sec/sec

3)恢複SEC_CASE_SENSITIVE_LOGON參數為“TRUE”,再次嘗試連接配接将會失敗。

sec@ora11gR2> conn / as sysdba

sys@ora11gR2> alter system set sec_case_sensitive_logon = TRUE;

4)使用“正确”的密碼進行嘗試,成功。

sys@ora11gR2> conn sec/SeC

5)結論

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

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

http://download.oracle.com/docs/cd/E11882_01/server.112/e10820/initparams218.htm#REFRN10299

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:

Database logon passwords are case sensitive.

false

Database logon passwords are not case sensitive.

9.小結

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