Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Получение хеша пароля пользователя  [new]
mensh
Member

Откуда: Пермь
Сообщений: 46
Добрый день!
В пользовательском приложении пользователь может менять свой пароль. При этом нужно выполнять проверку на количество повторяющихся паролей пользователя.
Хеши паролей можно получить с помощью представления sys.sql_logins см. поле "password_hash". Проблема в том, что это поле для всех пользователей не обладающих административными правами возвращает Null.
Думал хранить историю хешей паролей каждого пользователя в прикладной таблице в базе приложения. В Оракле есть специальное представление для получения истории хешей пароля пользователя, а в MS SQL не нашёл такого.
Пользователь не обладает правами sysadmin в БД. Право CONTROL SERVER не хочется давать.
Подскажите пожалуйста знающие люди - как можно обычному пользователю дать право на чтение хешей паролей из sys.sql_logins ?
13 авг 12, 20:05    [13006058]     Ответить | Цитировать Сообщить модератору
 Re: Получение хеша пароля пользователя  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Ну сделайте свою историю захешированных паролей, не обязательно лезть в sys.sql_logins.

Сообщение было отредактировано: 13 авг 12, 20:23
13 авг 12, 20:23    [13006101]     Ответить | Цитировать Сообщить модератору
 Re: Получение хеша пароля пользователя  [new]
Serg_77m
Member

Откуда: Донецк
Сообщений: 237
mensh, есть один запутанный способ с использованием сертификата и электронной подписи процедуры. Всех деталей не помню, примерно так:
1. Создаёшь на диске сертификат для использования в системе электронной подписи. Можно для этого воспользоваться утилитой makecert.exe
2. На основании этого сертификата создаёшь логин. С нужными правами доступа.
3. Этот же сертификат вставляешь в свою базу данных.
4. Пишешь процедуру, и потом добавляешь к ней электронную подпись (инструкцией add signature to ... by certificate ...)
После чего процедура будет выполняться от имени созданного логина и сможет получить доступ к системным представлениям в master.
13 авг 12, 20:35    [13006131]     Ответить | Цитировать Сообщить модератору
 Re: Получение хеша пароля пользователя  [new]
trew
Member

Откуда: Москва
Сообщений: 2646
Serg_77m,

Вот этот запутанный способ
ссылка
13 авг 12, 20:37    [13006137]     Ответить | Цитировать Сообщить модератору
 Re: Получение хеша пароля пользователя  [new]
Serg_77m
Member

Откуда: Донецк
Сообщений: 237
trew
Serg_77m,

Вот этот запутанный способ
ссылка


Да, нашёл уже официальное описание. Оно для доступа к sysprocesses, но для sql_logins тоже должно пройти.
13 авг 12, 20:42    [13006153]     Ответить | Цитировать Сообщить модератору
 Re: Получение хеша пароля пользователя  [new]
mensh
Member

Откуда: Пермь
Сообщений: 46
Друзья, всем огромное спасибо, что ответили!
С сертификатами я ещё не работал. Попробую применить способ на практике.

2: Гавриленко Сергей Алексеевич

Скажите пожалуйста какой функцией пользуется MS SQL для создания хеша пароля ? На основании значения этой функции я смог бы сохранять значения хеша паролей в свою таблицу для истории.
Я сравнил результат хеша пароля пользователя из sys.sql_logins.password_hash и результат вернувший PWDENCRYPT('user_password') - они разные.
У заказчика используются разные версии MS SQL от 2000 до 2008 R2.
14 авг 12, 07:26    [13007024]     Ответить | Цитировать Сообщить модератору
 Re: Получение хеша пароля пользователя  [new]
invm
Member

Откуда: Москва
Сообщений: 9836
mensh
У заказчика используются разные версии MS SQL от 2000 до 2008 R2.
На 2000-м нет сертификатов.
Для ведения собственной таблицы истории паролей совершенно не обязательно, чтобы хеш в ней совпадал с хешем в системных таблицах. Можете хоть собственную функцию хеширования использовать.
14 авг 12, 08:51    [13007149]     Ответить | Цитировать Сообщить модератору
 Re: Получение хеша пароля пользователя  [new]
mensh
Member

Откуда: Пермь
Сообщений: 46
Спасибо invm !
Попробую использовать PWDENCRYPT поскольку реализация уже есть. Сроки поджимают ;)
14 авг 12, 09:50    [13007342]     Ответить | Цитировать Сообщить модератору
 Re: Получение хеша пароля пользователя  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
hashbytes() еще есть.
14 авг 12, 10:53    [13007623]     Ответить | Цитировать Сообщить модератору
 Re: Получение хеша пароля пользователя  [new]
Evelion
Member

Откуда:
Сообщений: 37
А существует ли вообще информация о том, каким алгоритмом происходит хэширование паролей в версиях SQL Server'а > 2000 ?
Если кто знает интересные ссылки на эту тему, поделитесь =)
14 авг 12, 12:48    [13008438]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить