我们正在尝试保护oracle实例,并且默认密码验证功能不符合确定的确切规范。
sys编写并编译了一个新函数。这也被设置为“DEFAULT”配置文件password_verify_function
alter profile default limit
password_verify_function custom_function;
但是,创建新用户时,似乎不会进行密码验证。在编译函数期间,我没有收到任何警告或错误。这就是创建用户的方式:
create user stackoverflowexample
identified by easy
default tablespace encrypted_ts
quota unlimited on encrypted_ts
profile default;
我找不到/理解的是什么?
答案 0 :(得分:0)
无法重现:
CREATE OR REPLACE FUNCTION custom_function (
username VARCHAR2, password VARCHAR2, old_password varchar2) RETURN BOOLEAN
AS
BEGIN
IF password IS NULL OR length(password) < 10 THEN
RAISE_APPLICATION_ERROR(-20001, 'Password length less than 10.');
ELSE
RETURN TRUE;
END IF;
END custom_function;
/
-- FUNCTION CUSTOM_FUNCTION compiled
ALTER PROFILE DEFAULT LIMIT PASSWORD_VERIFY_FUNCTION custom_function;
-- profile DEFAULT altered.
CREATE USER stackoverflowexample IDENTIFIED BY easy;
-- SQL Error: ORA-28003: password verification for the specified password failed
CREATE USER stackoverflowexample IDENTIFIED BY easy567890;
-- user STACKOVERFLOWEXAMPLE created.