Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Passwortfeld in orakel erstellen

Eine Methode ohne "The Secure External Password Store" (was auch immer das sein mag) ist das Hinzufügen einer RAW(16)-Spalte zur Tabelle, um einen gehashten Benutzernamen und ein Passwort zu speichern:

alter table mytable add password raw(16);

Speichern Sie dann den gehashten Benutzernamen und das Passwort wie folgt darin:

insert into mytable (username, password, ...)
values (:username, dbms_obfuscation_toolkit.md5 
                      (input => utl_i18n.string_to_raw
                                  (upper(:username)||:password))
       );

Wenn ein Benutzer dann versucht, sich mit einem Benutzernamen und einem Passwort anzumelden, können Sie diese wie folgt überprüfen:

select 'OK'
from   mytable
where  username = :username
and    password = dbms_obfuscation_toolkit.md5 
                      (input => utl_i18n.string_to_raw
                                  (upper(:username)||:password));

Auf diese Weise kann niemand herausfinden, wie das gespeicherte Passwort lautet (außer durch Brute Force).