Oracle 密码复杂度的设置Word文件下载.docx

上传人:b****5 文档编号:8453941 上传时间:2023-05-11 格式:DOCX 页数:8 大小:16.63KB
下载 相关 举报
Oracle 密码复杂度的设置Word文件下载.docx_第1页
第1页 / 共8页
Oracle 密码复杂度的设置Word文件下载.docx_第2页
第2页 / 共8页
Oracle 密码复杂度的设置Word文件下载.docx_第3页
第3页 / 共8页
Oracle 密码复杂度的设置Word文件下载.docx_第4页
第4页 / 共8页
Oracle 密码复杂度的设置Word文件下载.docx_第5页
第5页 / 共8页
Oracle 密码复杂度的设置Word文件下载.docx_第6页
第6页 / 共8页
Oracle 密码复杂度的设置Word文件下载.docx_第7页
第7页 / 共8页
Oracle 密码复杂度的设置Word文件下载.docx_第8页
第8页 / 共8页
亲,该文档总共8页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

Oracle 密码复杂度的设置Word文件下载.docx

《Oracle 密码复杂度的设置Word文件下载.docx》由会员分享,可在线阅读,更多相关《Oracle 密码复杂度的设置Word文件下载.docx(8页珍藏版)》请在冰点文库上搜索。

Oracle 密码复杂度的设置Word文件下载.docx

LIMIT

from

dba_profiles

where

profile='

DEFAULT'

AND 

RESOURCE_TYPE 

'

PASSWORD'

;

RESOURCE_NAME 

-------------------------------- 

------------

FAILED_LOGIN_ATTEMPTS 

UNLIMITED

PASSWORD_LIFE_TIME 

PASSWORD_REUSE_TIME 

PASSWORD_REUSE_MAX 

PASSWORD_VERIFY_FUNCTION 

NULL

PASSWORD_LOCK_TIME 

PASSWORD_GRACE_TIME 

已选择7行。

注意到,那个 

LIMIT 

是 

也就是没有任何的密码复杂度限制。

由于听说,直接执行那个 

utlpwdmg.sql, 

会修改 

这个 

PROFILE, 

从而导致影响所有的用户。

因此只好去找个那个 

verify_function 

的代码,手工做点修改处理。

原有的代码是 

数字 

大小写 

符号。

长度要大于等于4

现在修改为仅仅 

大小写,长度要大于等于10。

--------------------------------------------------

-- 

验证密码复杂度

参数:

username 

用户名

password 

密码

old_password 

旧密码

返回值:

验证是否通过.

CREATE 

OR 

REPLACE 

FUNCTION 

verify_function(

varchar2,

varchar2

) 

RETURN 

boolean 

IS

boolean;

用于暂存密码长度.

integer;

differ 

是否包含 

判断标志.

isdigit 

是否包含小写字母 

ischar_lower 

是否包含大写字母 

ischar_upper 

数字字符.

digitarray 

varchar2(20);

小写字母字符.

chararray_lower 

varchar2(26);

大写字母字符.

chararray_upper 

BEGIN

digitarray:

0123456789'

小写字符.

chararray_lower:

abcdefghijklmnopqrstuvwxyz'

大写字符

chararray_upper:

='

ABCDEFGHIJKLMNOPQRSTUVWXYZ'

检查是否 

用户名与密码 

是否相同

IF 

NLS_LOWER(password) 

NLS_LOWER(username) 

THEN

raise_application_error(-20001, 

Password 

same 

as 

or 

similar 

to 

user'

);

END 

IF;

检查密码的长度是否符合要求.

length(password) 

<

10 

raise_application_error(-20002, 

length 

less 

than 

10'

检查密码是否是简单的单词

(这一段理论上执行不到,因为前面加了密码长度大于 

的限制)

IN 

('

welcome'

 

database'

account'

password'

oracle'

computer'

abcd'

too 

simple'

检查密码是否至少包含 

一个 

数字、一个小写字母,一个大写字母.

1. 

检查数字

默认 

密码中没有数字.

isdigit:

=FALSE;

取得密码长度.

:

length(password);

从 

0-9 

循环

FOR 

1..10 

LOOP

遍历密码中的每一个字符.

1..m 

substr(password,j,1) 

substr(digitarray,i,1) 

如果 

存在 

数字字符,设置 

“密码中有数字”

=TRUE;

跳出循环,进入到 

检查小写字符的部分.

GOTO 

findchar_lower;

LOOP;

FALSE 

raise_application_error(-20003, 

should 

contain 

at 

least 

one 

digit, 

Upper 

character 

and 

Lower 

character'

2. 

检查小写字符.

findchar_lower>

>

密码中没有小写字符.

ischar_lower:

循环.

1..length(chararray_lower) 

substr(chararray_lower,i,1) 

小写字母字符,设置 

“密码中有小写字母”

检查大写字符的部分.

findchar_upper;

3. 

检查大写字符.

findchar_upper>

密码中没有大写字符.

ischar_upper:

1..length(chararray_upper) 

substr(chararray_upper,i,1) 

大写字母字符,设置 

“密码中有大写字母”

跳出循环, 

本次新密码已经包含了 

大写字母与小写字母.

endsearch;

endsearch>

检查新密码与旧密码, 

是否至少有3个字母的变更.

IS 

NOT 

NULL 

首先获取 

密码长度的差异.

length(old_password) 

密码长度的差异 

小于3, 

那么需要进一步判断了.

abs(differ) 

设置 

长度比较小的那个密码的长度.

ELSE

length(old_password);

abs(differ);

新旧密码字符比较.

substr(password,i,1) 

!

substr(old_password,i,1) 

1;

raise_application_error(-20004, 

by 

characters'

Everything 

is 

fine;

return 

TRUE 

RETURN(TRUE);

END;

/

上面的存储过程, 

需要用 

conn 

sysdba 

登录到 

Oracle 

后进行创建.

否则后面创建 

PROFILE 

的时候, 

会出错。

存储过程创建完毕以后,创建一个 

PROFILE

my_profile 

VERIFY_FUNCTION;

因为我其他全部使用默认值, 

仅仅修改一个 

PASSWORD_VERIFY_FUNCTION

因此这里创建的时候, 

就仅仅指定一行.

然后修改一个测试用户的 

ALTER 

USER 

test_user 

my_profile;

然后尝试修改这个 

测试用户的密码

alter 

user 

identified 

"

123"

*

第 

行出现错误:

ORA-28003:

指定口令的口令验证失败

ORA-20002:

10

1234567890"

ORA-20003:

and

character

1234567890A"

1234567890Aa"

用户已更改。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 成人教育 > 成考

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2