多数 Oracle 数据库用户都使用默认配置文件创建用户帐户自从 Oracle 开始就可以通过创建一个配置文件然后使用以下两个语句之一分配给它一个用户来锁定一个帐户 CREATE USER myuser PROFILE myprofile; ALTER USER myuser [被屏蔽广告]PROFILE myprofile; 入侵数据库帐户的一个典型尝试是试用几个常用的口令比如welcome或者用户名之类的可以使用配置文件标记FAILED_LOGIN_ATTEMPTS 阻止多次失败的登录尝试 CREATE PROFILE myprofile LIMIT FAILED_LOGIN_ATTEMPTS PASSWORD_LOCK_TIME ; 分配给这个配置文件的用户将会在五次以不正确的口令尝试登录之后被拒之于门外帐户将会在一天之内不可访问直至 DBA 发出了一个ALTER USER ACCOUNT UNLOCK 命令 即使在几年之后我还发现在以前的项目中我的老口令依然能够使用这是一个很好的反面例子说明我们要对口令的生存时间设置一个期限使其在特定的一段时间(也就是合同的结束之日)之后过期另外还有一种选择即允许一个特定的宽限期这对不经常使用的项目很有用如果用户在口令过期之前不登录用户依然可以连接但是会显示一个警告直到宽限期过期在配置文件中使用PASSWORD_LIFE_TIME 和PASSWORD_GRACE_TIME 标记能够启用这些特性 ALTER PROFILE myprofile LIMIT PASSWORD_LIFE_TIME PASSWORD_GRACE_TIME ; 分配给那个配置文件的用户将会在口令修改的之后不能使用他们的帐户天之后尝试登录将会出现一个警告消息提示还有三天帐户就会被锁 很多用户会看到这些限制并且简单地尝试将他们的口令重设为他们以前使用的口令而不是每次都使用一个新口令可以使用PASSWORD_REUSE_TIME 和PASSWORD_REUSE_MAX 标记阻止用户重用一个口令 ALTER PROFILE myprofile LIMIT PASSWORD_REUSE_TIME PASSWORD_REUSE_MAX ; 这个配置文件的用户将不能重用一个口令超过天或者使用同一口令不能超过次 最后一些用户使用容易猜出的口令通过创建一个 PL/SQL 过程来检验口令就可以限制一个口令的格式(比如检查最小长度字母数字或者大小写混合或者确认口令不是用户名的变种)必须以如下格式创建存储过程 CREATE OR REPLACE FUNCTION verify_password ( userid varchar() password varchar() old_password varchar() ) RETURN BOOLEAN 可以以如下方式分配这个函数(可以是任何名称但是必须属于 SYS 帐户) ALTER PROFILE myprofile LIMIT PASSWORD_VERIFY_FUNCTION verify_password; |