本文共 4343 字,大约阅读时间需要 14 分钟。
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 ProductionPL/SQL Release 12.2.0.1.0 - ProductionCORE 12.2.0.1.0 ProductionTNS for 64-bit Windows: Version 12.2.0.1.0 - ProductionNLSRTL Version 12.2.0.1.0 - Production已选择 5 行。已用时间: 00: 00: 00.60SQL> show parameter SEC_CASE_SENSITIVE_LOGON;NAME TYPE VALUE------------------------------------ ---------------------- ------------------------------sec_case_sensitive_logon boolean TRUESQL>
为了获得更大的安全性,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:
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 .
Enter the following ALTER SYSTEM
statement:
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 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 11GADAMS 10G 11GCLARK 10G 11GPRESTON 11GBLAKE 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------------------------------ ----------------------------------ANONYMOUSAPPQOSSYS 11G 12CAUDSYS 11G 12CBI 11G 12CC##TESTUSER 11G 12CCTXSYS 11G 12CDBSFWUSER 11G 12CDBSNMP 11G 12CDIP 11G 12CDVF 11GDVSYS 11GGGSYS 11G 12CGSMADMIN_INTERNAL 11G 12CGSMCATUSER 11G 12CGSMUSER 11G 12CHR 11G 12C
区分大小写对密码文件的影响
可以在ORAPWD命令创建密码时使用 ignorecase 参数来启用或者禁用密码对大小写的敏感性。默认值是N,即默认情况下是启用密码大小写敏感性的。
例如:
orapwd file=orapw entries=100 ignorecase=nEnter password for SYS: password
以上使用orapwd命令创建了一个新的密码文件,因为 ignorecase 参数默认值是 N ,所以后面输入的密码时区分大小写的。在以后使用密码时,也需要注意区分大小写;否则会提示密码错。
参考Oracle官方文档:
转载地址:http://bytdi.baihongyu.com/