Зашифровать столбец пароля в SQL Server 2008

#asp.net #sql-server

#asp.net #sql-сервер

Вопрос:

Мне интересно, как зашифровать столбец моего пароля в SQL Server 2008. Я прочитал эту статью, но я все еще понятия не имею, как … есть ли более простое для понимания руководство? Спасибо!

Комментарии:

1. Похоже, что ваша ссылка на «эту статью» пропала без вести.

2. упс, начинается msdn.microsoft.com/en-us/library/ms179331.aspx

3. @user133466 — Почему вы не сохраняете хэши паролей из исходного приложения?

4. можете ли вы показать мне статью об этом? Я использую ASP.net (VB.net )

5. @user133466 — Если вы используете проверку подлинности Forms с помощью SqlMembershipProvider, он обработает все хэширование за вас.

Ответ №1:

Обычной практикой является сохранение хэша пароля. Нравится:

 HASHBYTES('SHA1', convert(varbinary(32), @password))
  

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

В Интернете есть много руководств.

Комментарии:

1. Также неплохо использовать значение salt. Случайный (криптографически надежный) int или bigint могут работать отлично.

2. как мне проверить учетные данные? Обычно я использую If ProfileDataset. Таблицы («RO_User»).Строки. Count = 1 и strPassword. toString <> ProfileDataset. Таблицы («RO_User»). Строки(0).Элемент(«User_psw»). Затем ввести строку… но теперь мне негде разместить функцию hashbytes

3. @user133466: хэшируйте учетные данные таким же образом, как и исходный пароль. Если хэши совпадают, строки равны.

4. @user133466 — Следует отметить, что вы должны сделать это в БД. Т.е. передать обычный текстовый пароль в БД, использовать для него хэш-байты, а затем вернуть, соответствует ли результат хэшу, хранящемуся в БД. Кроме того, это означает, что вы передаете в базу данных обычный текстовый пароль в формате clear, если только вы не зашифровали соединение с базой данных.

Ответ №2:

Вместо этого вам следует рассмотреть возможность хранения хэшей паролей вместо использования шифрования. На случай, если вы не знаете о различиях, хэш (также называемый односторонним хэшем) принимает входные данные и выдает какую-то чушь (называемую хэшем), так что для одного и того же ввода создается одна и та же чушь. Аутентификация выполняется путем хэширования того, что пользователь ввел на клиенте, и сравнения его с информацией в базе данных. Если они совпадают, пароли совпадают. Не вдаваясь в подробности, хэши никогда не могут быть возвращены обратно в обычный текст, который является их защитой. Однако шифрование включает в себя создание шифра таким образом, что при наличии ключа дешифрования вы можете вернуть шифр обратно в обычный текст.

Если вы используете SQL Server и ASP.NET вам следует изучить аутентификацию форм с помощью SqlMembershipProvider.

Объяснено: Формирует аутентификацию в ASP.NET 2.0

Класс SqlMembershipProvider

Обзор проверки подлинности в формах

Комментарии:

1. Именно поэтому мы используем соль, которая никогда не покидает базу данных. Хэш пользовательского интерфейса соль = хэш базы данных.

2. Проголосуйте за MembershipProvider. На мой взгляд, вам понадобится действительно веская причина, чтобы не использовать его. Также для gobbledygook.

3. @Simon: MembershipProvider привязывает вас к ASP.NET клиент. Также довольно сложно добавить к нему новую функциональность.

4. @Andomar — OP уже сказал, что он использовал ASP.NET (и SQL Server). Первое правило безопасности — не делайте этого самостоятельно. Если пользователь использует функцию Hashbytes, ему необходимо знать о солях и последствиях передачи обычного текста вплоть до базы данных

5. @Andomar: Верно, но, учитывая, что OP заявил, что он использует ASP.NET и спрашивает об основах, таких как хеширование, я подозреваю, что MembershipProvider сделает все, что ему нужно на данный момент. @user133466: Я предлагаю вам проверить это и принять обоснованное решение относительно того, соответствует ли это вашим потребностям.

Ответ №3:

Microsoft упростила это с помощью быстро названного

FormsAuthentication.HashPasswordForStoringInConfigFile .

http://www.adventuresindevelopment.com/2009/05/23/a-simple-way-to-hash-passwords-in-aspnet/