DBLOG
» WTF
Toggle navigation
DBLOG
主页
1、用户
2、各种方案
3、备份恢复
4、表空间相关
5、OGG
6、文件管理
7、常见故障分析
8、DG
9、集群相关
About Me
归档
标签
无
2025-08-29 00:07:51
3
0
0
admin
**Profile 修改 → 用户创建 → 密码修改 → 登录失败锁定 → 解锁验证** --- # Oracle 密码策略测试报告(含 Profile 修改) 日期:2024年6月 测试人员:XXX --- ## 一、测试目标 - 修改 Profile 以满足密码策略要求(失败登录次数、锁定时间、密码复杂度) - 创建测试用户并关联该 Profile - 验证密码复杂度限制生效 - 验证失败登录次数限制及账号锁定 - 验证锁定时间后自动解锁 --- ## 二、测试环境 - Oracle 版本:12c / 19c - Profile 名称:`DEFAULT` - 失败登录次数限制:5次 - 账号锁定时间:0.0020833 天(约3分钟) - 自定义密码验证函数:`custom_verify_function`(强制16位及复杂度) --- ## 三、详细测试步骤 ### 1. 修改 Profile (资源限制及密码验证函数) **执行语句:** ```sql -- 创建自定义密码验证函数(若未创建) CREATE OR REPLACE FUNCTION custom_verify_function( username VARCHAR2, password VARCHAR2, old_password VARCHAR2) RETURN BOOLEAN IS nUpper NUMBER; nLower NUMBER; nDigit NUMBER; nSpecial NUMBER; BEGIN IF LENGTH(password) < 16 THEN raise_application_error(-20001, '密码长度必须至少16位'); END IF; nUpper := REGEXP_COUNT(password, '[A-Z]'); IF nUpper = 0 THEN raise_application_error(-20002, '密码必须包含至少一个大写字母'); END IF; nLower := REGEXP_COUNT(password, '[a-z]'); IF nLower = 0 THEN raise_application_error(-20003, '密码必须包含至少一个小写字母'); END IF; nDigit := REGEXP_COUNT(password, '[0-9]'); IF nDigit = 0 THEN raise_application_error(-20004, '密码必须包含至少一个数字'); END IF; nSpecial := REGEXP_COUNT(password, '[^a-zA-Z0-9]'); IF nSpecial = 0 THEN raise_application_error(-20005, '密码必须包含至少一个特殊字符'); END IF; RETURN TRUE; END; / -- 修改Profile限制 ALTER PROFILE DEFAULT LIMIT FAILED_LOGIN_ATTEMPTS 5 PASSWORD_LOCK_TIME 0.0020833 -- 约3分钟 PASSWORD_VERIFY_FUNCTION custom_verify_function; ``` **记录说明:** - 自定义函数生效后,密码必须满足长度及复杂度要求 - 锁定时间单位为天,支持小数,0.0020833天约等于3分钟 - 失败登录尝试限制为5次 --- ### 2. 创建用户 `ceshi` 并关联 Profile ```sql CREATE USER ceshi IDENTIFIED BY "InitPassw0rd!@#2024"; -- 初始密码符合策略 ALTER USER ceshi PROFILE DEFAULT; GRANT CONNECT, RESOURCE TO ceshi; ``` **记录说明:** - 用户创建成功并绑定 `DEFAULT` Profile - 初始密码满足自定义密码策略,创建无异常 --- ### 3. 验证密码修改操作 #### 3.1 合规密码修改测试(应成功) ```sql ALTER USER ceshi IDENTIFIED BY "ComplexPasswd123$AB"; ``` - 16位以上,包含大小写、数字、特殊字符 **结果:** - 密码修改成功 #### 3.2 不合规密码修改测试(应失败) ```sql ALTER USER ceshi IDENTIFIED BY "Short1!"; ``` **结果:** - 报错示例: ``` ORA-20001: 密码长度必须至少16位 ORA-06512: at "SCHEMA.CUSTOM_VERIFY_FUNCTION", line XX ``` --- ### 4. 测试失败登录次数锁定 - 使用错误密码登录5次: ```bash sqlplus ceshi/wrongpassword@orcl ``` **预期结果:** - 前4次提示密码错误 - 第5次提示账号锁定 **实际结果示例:** ``` ORA-01017: 无效用户名/密码;登录被拒绝 (前四次) ORA-28000: 账号被锁定 (第五次) ``` --- ### 5. 验证账号锁定时间及自动解锁 - 等待约3分钟后,使用正确密码登录: ```bash sqlplus ceshi/ComplexPasswd123$AB@orcl ``` **预期结果:** - 登录成功,账号自动解锁 **实际结果:** - 成功登录,账号状态正常 --- ### 6. 查询账号状态确认 ```sql SELECT username, account_status FROM dba_users WHERE username = 'CESHI'; ``` **账号状态示例:** | USERNAME | ACCOUNT_STATUS | | -------- | -------------- | | CESHI | OPEN | --- ## 四、总结 | 测试项目 | 预期结果 | 实际结果 | 备注 | |--------------------|---------------------------|-------------------------|---------------------------| | Profile 修改 | 修改成功,密码策略生效 | 成功 | 自定义函数有效 | | 用户创建 | 成功,绑定 Profile | 成功 | | | 合规密码修改 | 修改成功 | 成功 | | | 不合规密码修改 | 拒绝修改,提示错误 | 提示密码长度不足等错误 | | | 密码错误登录 | 5次失败后锁定账号 | 账号锁定 | | | 锁定时间后解锁 | 锁定期后账号自动解锁 | 3分钟后可登录 | | --- ## 五、附录 - Profile 修改SQL脚本 - 自定义密码验证函数代码 - 测试登录错误及解锁时间日志截图(若有) --- 如需,我可帮你准备自动化测试脚本或者把这个流程写成Shell/PLSQL脚本方便后续重复测试。需要请告诉我!
上一篇:
下一篇:
0
赞
3 人读过
新浪微博
微信
腾讯微博
QQ空间
人人网