Pular para o conteúdo
Visualizando 3 posts - 1 até 3 (de 3 do total)
  • Autor
    Posts
  • #84393
    souza
    Participante

      Boa noite pessoal

      Rodei a utlpwdmg.sql para alterar o profile default. Sei que a senha do usuário ñ pode ser o nome do usuário , senha com pelo menos 4 caracteres e também sei que precisa um caracter , digito e pontuação e entre outras coisas.

      Porém quando vou criar um usuário (apenas exemplo) me apresenta o seguinte erro

      create user teste2015
      identified by t?Es0;

      ERRO na linha 2:
      ORA-00911: caractere inválido

      A verify_function pede um sinal de pontuação , e aí não entendi o porquê do erro – ainda mais que olhando o script abaixo é possível ver que é permitido o uso de ? e outros sinais.

      Alguém tem alguma idéia ?

      Segue abaixo

      Rem
      Rem $Header: utlpwdmg.sql 31-aug-2000.11:00:47 nireland Exp $
      Rem
      Rem utlpwdmg.sql
      Rem
      Rem Copyright (c) Oracle Corporation 1996, 2000. All Rights Reserved.
      Rem
      Rem NAME
      Rem utlpwdmg.sql – script for Default Password Resource Limits
      Rem
      Rem DESCRIPTION
      Rem This is a script for enabling the password management features
      Rem by setting the default password resource limits.
      Rem
      Rem NOTES
      Rem This file contains a function for minimum checking of password
      Rem complexity. This is more of a sample function that the customer
      Rem can use to develop the function for actual complexity checks that the
      Rem customer wants to make on the new password.
      Rem
      Rem MODIFIED (MM/DD/YY)
      Rem nireland 08/31/00 – Improve check for username=password. #1390553
      Rem nireland 06/28/00 – Fix null old password test. #1341892
      Rem asurpur 04/17/97 – Fix for bug479763
      Rem asurpur 12/12/96 – Changing the name of password_verify_function
      Rem asurpur 05/30/96 – New script for default password management
      Rem asurpur 05/30/96 – Created
      Rem

      — This script sets the default password resource parameters
      — This script needs to be run to enable the password features.
      — However the default resource parameters can be changed based
      — on the need.
      — A default password complexity function is also provided.
      — This function makes the minimum complexity checks like
      — the minimum length of the password, password not same as the
      — username, etc. The user may enhance this function according to
      — the need.
      — This function must be created in SYS schema.
      — connect sys/ as sysdba before running the script

      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;
      digitarray varchar2(20);
      punctarray varchar2(25);
      chararray varchar2(52);

      BEGIN
      digitarray:= ‘0123456789’;
      chararray:= ‘abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ’;
      punctarray:=’!”#$%&(/)“*+,-/:;<=>?_’;

      — Check if the password is same as the username
      IF NLS_LOWER(password) = NLS_LOWER(username) THEN
      raise_application_error(-20001, ‘Password same as or similar to user’);
      END IF;

      — Check for the minimum length of the password
      IF length(password) < 4 THEN raise_application_error(-20002, 'Password length less than 4'); END IF; -- Check if the password is too simple. A dictionary of words may be -- maintained and a check may be made so as not to allow the words -- that are too simple for the password. IF NLS_LOWER(password) IN ('welcome', 'database', 'account', 'user', 'password', 'oracle', 'computer', 'abcd') THEN raise_application_error(-20002, 'Password too simple'); END IF; -- Check if the password contains at least one letter, one digit and one -- punctuation mark. -- 1. Check for the digit isdigit:=FALSE; m := length(password); FOR i IN 1..10 LOOP FOR j IN 1..m LOOP IF substr(password,j,1) = substr(digitarray,i,1) THEN isdigit:=TRUE; GOTO findchar; END IF; END LOOP; END LOOP; IF isdigit = FALSE THEN raise_application_error(-20003, 'Password should contain at least one digit, one character and one punctuation'); END IF; -- 2. Check for the character <>
      ischar:=FALSE;
      FOR i IN 1..length(chararray) LOOP
      FOR j IN 1..m LOOP
      IF substr(password,j,1) = substr(chararray,i,1) THEN
      ischar:=TRUE;
      GOTO findpunct;
      END IF;
      END LOOP;
      END LOOP;
      IF ischar = FALSE THEN
      raise_application_error(-20003, ‘Password should contain at least one
      digit, one character and one punctuation’);
      END IF;
      — 3. Check for the punctuation
      <>
      ispunct:=FALSE;
      FOR i IN 1..length(punctarray) LOOP
      FOR j IN 1..m LOOP
      IF substr(password,j,1) = substr(punctarray,i,1) THEN
      ispunct:=TRUE;
      GOTO endsearch;
      END IF;
      END LOOP;
      END LOOP;
      IF ispunct = FALSE THEN
      raise_application_error(-20003, ‘Password should contain at least one
      digit, one character and one punctuation’);
      END IF;

      <>
      — Check if the password differs from the previous password by at least
      — 3 letters
      IF old_password IS NOT NULL THEN
      differ := length(old_password) – length(password);

      IF abs(differ) < 3 THEN IF length(password) < length(old_password) THEN m := length(password); ELSE m := length(old_password); END IF; differ := abs(differ); FOR i IN 1..m LOOP IF substr(password,i,1) != substr(old_password,i,1) THEN differ := differ + 1; END IF; END LOOP; IF differ < 3 THEN raise_application_error(-20004, 'Password should differ by at least 3 characters'); END IF; END IF; END IF; -- Everything is fine; return TRUE ; RETURN(TRUE); END; / -- This script alters the default parameters for Password Management -- This means that all the users on the system have Password Management -- enabled and set to the following values unless another profile is -- created with parameter values set to different value or UNLIMITED -- is created and assigned to the user. ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME 60 PASSWORD_GRACE_TIME 10 PASSWORD_REUSE_TIME 1800 PASSWORD_REUSE_MAX UNLIMITED FAILED_LOGIN_ATTEMPTS 3 PASSWORD_LOCK_TIME 1/1440 PASSWORD_VERIFY_FUNCTION verify_function;

      #84394
      Avatar photoLeonardo Litz
      Participante

        Tenta assim:

        create user teste2015
        identified by “t?Es0”;

        Vlw Leonardo Litz

        #84435
        joseniz
        Participante

          A mensagem ORA-00911 é uma restrição do RDBMS, isso ocorre antes de passar pela função de validação de senha contida na profile default.

          Note que as únicas mensagens emitidas pela função padrão postada por você são: ORA-20001, ORA-20002, ORA-20003 e ORA-20004.

        Visualizando 3 posts - 1 até 3 (de 3 do total)
        • Você deve fazer login para responder a este tópico.