Oracle 10g和Oracle 11g、12c 关于关于启用或禁用密码大小写敏感性的问题讨论

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/seagal890/article/details/82920007

Oracle 10g和Oracle 11g、12c 关于关于启用或禁用密码大小写敏感性的问题讨论

默认情况下,当在Oracle 10g以后的版本中创建或修改用户帐户时,密码是区分大小写的。为了控制密码中的区分大小写的使用,可以通过设置SEC_CASE_SENSITIVE_LOGON 初始化参数来进行控制。只有具有ALTE SYSTEM 特权的用户可以改变SEC_CASE_SENSITIVE_LOGON 初始化参数的设置。

当其值设置为 TRUE 时,启用区分大小写;当其值设置为 FALSE 时,禁用大小写敏感度。

在Oracle 11g 和 Oracle 12c 版本中,默认值是:TRUE。            

SQL> select banner from v$version;

BANNER
----------------------------------------------------------------------------------------------------------------------------------------------------------------
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
PL/SQL Release 12.2.0.1.0 - Production
CORE    12.2.0.1.0      Production
TNS for 64-bit Windows: Version 12.2.0.1.0 - Production
NLSRTL Version 12.2.0.1.0 - Production

已选择 5 行。

已用时间:  00: 00: 00.60
SQL> show parameter SEC_CASE_SENSITIVE_LOGON;

NAME                                 TYPE                   VALUE
------------------------------------ ---------------------- ------------------------------
sec_case_sensitive_logon             boolean                TRUE
SQL>

为了获得更大的安全性,Oracle建议您启用密码中的大小写敏感度。但是,如果您的应用程序有兼容性问题,可以使用此参数禁用密码大小写敏感性。应用程序兼容性问题的例子是应用程序的密码被硬编码为不区分大小写,或者不同的应用程序模块在发送凭据以启动数据库会话时大小写敏感性不一致。

当启用独占模式时,不要将SEC_CASE_SENSITIVE_LOGON参数设置为FALSE(SQLNET.ALLOWED_LOGON_VER.参数设置为11),因为在独占模式中使用的更安全的验证器仅支持区分大小写的密码检查。由于兼容性的原因,当SQLNET.ALLOWED_LOGON_VER.参数设置为11时,Oracle数据库并不限制使用SEC_CASE_SENSITIVE_LOGON初始化参数的值为 FALSE 的设置。 

在Oracle官方文档中这样描述:

To enable case sensitivity in passwords:

  1. If you are using a password file, ensure that it was created with the IGNORECASE parameter set to N.

    The IGNORECASE parameter overrides the SEC_CASE_SENSITIVE_LOGON parameter. By default, IGNORECASE is set to Y, which means that passwords are treated as case-insensitive. For more information about password files, see Oracle Database Administrator's Guide.

  2. Enter the following ALTER SYSTEM statement:

    扫描二维码关注公众号,回复: 3475318 查看本文章
    ALTER SYSTEM SET SEC_CASE_SENSITIVE_LOGON = TRUE
    

Finding the Password Versions of User Accounts

In previous releases of Oracle Database, passwords were not case sensitive. If you import user accounts from a previous release, for example, Release 10g, into the current database release, the case-insensitive passwords in these accounts remain case insensitive until the user changes his or her password. If the account was granted SYSDBA or SYSOPER privilege, it is imported to the password file. (See "How Case Sensitivity Affects Password Files" for more information.) When a password from a user account from the previous release is changed, it then becomes case sensitive.

如果您从以前的版本导入用户帐户,并且这些帐户是用SYSDBA或SYSOPER特权创建的,那么这些帐户将包含在密码文件中。这些帐户的密码不区分大小写。下一次用户更改密码时,如果启用了区分大小写,密码将变得区分大小写。为了获得更大的安全性,让这些用户更改密码。

You can find users who have case sensitive or case insensitive passwords by querying the DBA_USERS view. The PASSWORD_VERSIONS column in this view indicates the release in which the password was created. For example:

SELECT USERNAME,PASSWORD_VERSIONS FROM DBA_USERS;

USERNAME                       PASSWORD_VERSIONS
------------------------------ -----------------
JONES                          10G 11G
ADAMS                          10G 11G
CLARK                          10G 11G
PRESTON                        11G
BLAKE                          10G

帐户JONES、ADAMS和CLARK的密码最初是在版本10G中创建的,然后在版本11G中重置。他们的密码,如果已经启用了情况敏感度,现在是区分大小写的,就像PRESTON的密码一样。然而,BLAKE的帐户仍然使用Oracle 10g中的标准,所以它是不区分大小写的。这时,要求他重置他的密码,使其对大小写敏感,因此更安全。  

在Oracle 12c 中的查询是这样:

SQL> SELECT USERNAME,PASSWORD_VERSIONS FROM DBA_USERS order by username asc;

USERNAME                       PASSWORD_VERSIONS
------------------------------ ----------------------------------
ANONYMOUS
APPQOSSYS                      11G 12C
AUDSYS                         11G 12C
BI                             11G 12C
C##TESTUSER                    11G 12C
CTXSYS                         11G 12C
DBSFWUSER                      11G 12C
DBSNMP                         11G 12C
DIP                            11G 12C
DVF                            11G
DVSYS                          11G
GGSYS                          11G 12C
GSMADMIN_INTERNAL              11G 12C
GSMCATUSER                     11G 12C
GSMUSER                        11G 12C
HR                             11G 12C

区分大小写对密码文件的影响

可以在ORAPWD命令创建密码时使用 ignorecase 参数来启用或者禁用密码对大小写的敏感性。默认值是N,即默认情况下是启用密码大小写敏感性的。

例如:

orapwd file=orapw entries=100 ignorecase=n
Enter password for SYS: password

 以上使用orapwd命令创建了一个新的密码文件,因为 ignorecase 参数默认值是 N ,所以后面输入的密码时区分大小写的。在以后使用密码时,也需要注意区分大小写;否则会提示密码错。

参考Oracle官方文档:

https://docs.oracle.com/cd/E11882_01/network.112/e36292/authentication.htm#DBSEG30324

 

猜你喜欢

转载自blog.csdn.net/seagal890/article/details/82920007