oracle最简便的密码校验函数,profile的使用

本文介绍如何在Oracle数据库中利用内置脚本utlpwdmg.sql创建和定制密码策略,包括密码复杂度、账户过期和密码过期策略。通过修改此脚本,你可以为不同类型的用户提供特定的密码策略,简化数据库管理。
摘要由CSDN通过智能技术生成

生产中我们不同用户通常有不同的策略,例如应用连接用户我们希望密码永不过期,维护用户为了安全要几个月修订一次,大家知道oracle非常强大,这些功能都能在oracle中实现。但是过程往往觉得很麻烦,如密码策略如何自建,profile格式等问题。其实oracle 自带的脚本中已经给我写好了密码校验策略。

本案就教大家最简洁的如何限定oracle用户密码复杂度,账户过期策略,密码过期策略以及针对不同用户设置不同的策略。

脚本位于$ORACLE_HOME/rdbms/admin/utlpwdmg.sql 中,我们只要修改部分语句就可以建立自己的密码策略。

数据库版本11.2.0.3

脚本如下,基本包含密码的各种策略,可以根据自己的要去自己修改。

CREATE OR REPLACE FUNCTION verify_function
(username varchar2,
  password varchar2,
  old_password varchar2)
  RETURN boolean IS 
   n boolean;
   m integer;
   differ integer;
   isdigit boolean;
   ischar  boolean;
   ispunct boolean;
   db_name varchar2(40);
   digitarray varchar2(20);
   punctarray varchar2(25);
   chararray varchar2(52);
   i_char varchar2(10);
   simple_password varchar2(10);
   reverse_user varchar2(32);

BEGIN 
   digitarray:= '0123456789';
   chararray:= 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';

   -- 校验密码长度至少为8位
   IF length(password) < 8 THEN
      raise_application_error(-20001, 'Password length less than 8');
   END IF;


   -- 校验密码是否和用户名相同
   IF NLS_LOWER(password) = NLS_LOWER(username) THEN
     raise_application_error(-20002, 'Password same as or similar to user');
   END IF;
   FOR i IN 1..100 LOOP
      i_char := to_char(i);
      if NLS_LOWER(username)|| i_char = NLS_LOWER(password) THEN
        raise_application_error(-20005, 'Password same as or similar to user name ');
      END IF;
    END LOO
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值