создание поля пароля в оракуле - PullRequest
2 голосов
/ 29 января 2010

Какая польза от «Безопасного внешнего хранилища паролей»?

А можно ли создать поле пароля в моей таблице Oracle с помощью «Безопасного внешнего хранилища паролей»? Или как я могу создать поле пароля в моей таблице Oracle без использования «Безопасного внешнего хранилища паролей»?

Ответы [ 2 ]

3 голосов
/ 29 января 2010

Один из способов без использования «Безопасного внешнего хранилища паролей» (что бы это ни было) состоит в добавлении столбца RAW (16) в таблицу для хранения хешированного имени пользователя и пароля:

alter table mytable add password raw(16);

Затем сохраните хэшированное имя пользователя и пароль следующим образом:

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

Затем, когда пользователь пытается войти с именем пользователя и паролем, вы можете проверить их следующим образом:

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

Таким образом, никто не может узнать, какой хранится пароль (кроме как грубой силой).

2 голосов
/ 29 января 2010

Безопасное внешнее хранилище паролей не предназначено для обычных учетных записей пользователей.Он направлен на безопасное хранение паролей для учетных записей, которым необходимо подключиться к базе данных из автономных процессов (например, сценариев оболочки):

Безопасное внешнее хранилище паролей использует Oracle Wallet для хранения одного илибольше комбинаций имени пользователя и пароля для запуска пакетных процессов и других задач, которые выполняются без взаимодействия с пользователем.

Узнайте больше .

Почему вы хотите сохранитьпароли пользователей в базе?Если вы хотите, чтобы пользователи подключались через индивидуально идентифицируемые учетные записи, используйте функциональность Oracle USER.Если вы создаете веб-сайт, и ваши пользователи будут подключаться через универсального пользователя, тогда аутентификация лучше всего выполняется с помощью чего-то среднего уровня, который аутентифицируется по Active Directory (или как угодно) через LDAP (или что-то еще).

Но если вы действительно хотите использовать свою собственную аутентификацию, используйте односторонний хэш, как подсказывает Тони.Однако, если вы пользуетесь недавним выпуском Oracle (и ваш интерес к безопасному внешнему хранилищу паролей предполагает, что вы используете как минимум 10g), вам следует использовать DBMS_CRYPTO.HASH () с алгоритмом SHA-1 а не более старый MD5.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...