Вопрос по sql-server, sql, sql-server-2008 – Как мне хэшировать пароль администратора в моей таблице Users?

2

Как мне хэшировать пароль администратора в моей таблице Users?

Использование SQL Server 2008 R2

Я знаю, что в PHP встроена команда шифрования, но я не уверен, возможно ли это с помощью SQL-запроса.

Пример: Таблица называется пользователями, с вводом admin, парольsha1('password')

Обычно вы не шифруете пароли, а хешируете их (то есть используете функцию, подобную SHA, которая не является обратимой, но позволяет вам проверить правильность пароля). Denys Séguret
Где вы видите «пароль администратора»? (может быть, вы могли бы быть более конкретным) хранится в виде простого текста? Вы говорите о пароле, который вы используете в строке подключения, которую ваше приложение использует для подключения к SQL Server? Aaron Bertrand
Нет, нет, нет. Я говорю о том, что у меня есть таблица, называемая пользователями, и я хочу создать для нее учетную запись администратора. Event_Horizon
Почему вы отменили мою правку? Основная часть вопроса по-прежнему подразумевает, что вы говорите о пароле sa, а не о паролях, которые вы добавили в свою таблицу для пользователей, не имеющих отношения к самому SQL Server. Aaron Bertrand
Я был в процессе редактирования, когда вы меняли его. Event_Horizon

Ваш Ответ

3   ответа
0

использованиеHASHBYTES и указатьSHA1 как алгоритм. Пример:

SELECT HASHBYTES('SHA1', @password);

Edit: как сказал Шива в комментариях, вы должны хранить свои пароли по-другому и, по крайней мере, солить их.

Посмотреть здесь:Предпочтительный способ хранения паролей в базе данных

Ну, я знаю, что я должен хранить их в виде хэшей в БД, вот почему я спрашиваю, как сначала хэшировать проход, используя SQL. Я также знаю, что должен использовать соли, но я не совсем уверен, что полностью их понимаю, это просто еще один хешированный пароль, добавленный к паролю? Может ли кто-нибудь привести пример того, как они будут обращаться с солями, используя PHP? Event_Horizon
Что касается засолки, вы в основном просто вводите случайную строку символов с паролем, чтобы дополнительно предотвратить его взлом.
Я бы пошел на SHA256, да, просто для большей безопасности, вы используетеhash функция в PHP для использования SHA256php.net/manual/en/function.hash.php
Должен ли я использовать SHA256, если программа может перейти от внутренней к внешней в какой-то момент? Event_Horizon
0

дит обычный текст, обычно используя шифр, и может быть обращено к исходному вводу, если хеш не может быть возвращен к исходному вводу.

Для вашего запроса вы должны использоватьHASHBYTES функция:

DECLARE @YourInput nvarchar(4000);
SELECT @YourInput = CONVERT(nvarchar(4000),'dslfdkjLK85kldhnv$n000#knf');
SELECT HASHBYTES('SHA1', @YourInput);

Если вы используете SQL Server 2012, вы можете использовать:

SELECT HASHBYTES('SHA_256', @YourInput); // SHA 256 or SHA_512

http://msdn.microsoft.com/en-us/library/ms174415.aspx

@Event_Horizon - вы должны хранить все пароли в виде хэша, а не только администраторов. Это лучше с точки зрения безопасности и также уменьшит логику, необходимую для вашей системы входа в систему.
Так что, если бы я хэшировал пароль в SQL для этого одного пользователя, я все равно мог бы использовать его для системы входа в систему, верно? Мне просто нужно передать пароль из PHP в хэше SQL? Event_Horizon
1

что ни один из перечисленных способов не является хорошим способом хранения хэшей паролей. Используйте PBKDF2 (PKCS # 5, RFC2898) для хэшированияsalted пароль много, много раз (OWASP рекомендует 64 000 раз в 2012 году, удваивая каждые 2 года). В идеале хэшируйте это переменное число раз, сохраняя с помощью случайной соли для каждого пользователя.

Более того, сопоставьте предложенный пароль со списком известных неправильных паролей, в идеале с уже примененными базовыми правилами взлома (перевод на 1337), поэтому & quot; P @ $$ w0rd & quot; не допускается.

См. Шпаргалку для хранения паролей OWASP:https://www.owasp.org/index.php?title=Password_Storage_Cheat_Sheet&setlang=es

Похожие вопросы