2013-08-09 3 views
0

Я разрабатываю классическое приложение WebForms в ASP.NET C#, я аутентифицирую использование, используя мой пользовательский метод FormsAuthentication, который считывает данные пользователей из пользовательской таблицы sql Server, где хранится также пароль. Эта таблица пользователей частично уже заполнена, и я также могу добавить пользователей, используя мою страницу aspx, которую я разработал. Я хочу зашифровать пароль пользователей в БД, я думаю, мне нужны две вещи: сценарий SQL для шифрования данных, уже сохраненных в моей таблице, и код для шифрования/дешифрования пароля при регистрации нового пользователя.Как зашифровать пароль на SQL Server и ASP.NET C#

Я читал, что могу использовать MD5, хеширование, SHA1, SH2, но я в замешательстве. Можете ли вы посоветовать мне, что такое лучший подход к обеспечению безопасности и как я могу это сделать?

спасибо

+1

Этот вопрос пугает меня. Безопасность - это не то, что вы можете «нанести удар». Вам нужно понять это полностью и полностью. Проведите некоторое исследование хеширования, используя значения соли, затем вернитесь и задайте более целенаправленный вопрос, когда это необходимо. – PaulG

+0

@PaulG извините за мой плохой вопрос, я провел некоторое исследование хеширования, и, как я писал в своем вопросе, я не понимаю, что является самым безопасным подходом к этому. Я честно не понимаю, почему я был оштрафован за репутацию -6 :-( – ezechiele2517

ответ

2

Во-первых, не используйте MD5 или SHA1. Эти алгоритмы не предназначены для хранения паролей, а many - sites - have - looked - the - fool для их использования. И учитывая ваш уровень знаний, вы даже не должны использовать SHA2. Вместо этого используйте BCrypt, SCrypt или PBKDF2. BCrypt, вероятно, ваш лучший вариант, так как API является самым простым в использовании. Пример:

//Hash user password 
String passwordHash = BCrypt.HashPassword(thePassword); 
//Verify user password 
bool passwordIsCorrect = BCrypt.Verify(thePassword, passwordHash); 

Во-вторых, не используйте SQL-скрипт для шифрования паролей уже в базе данных. Нет причин строить какой-то запутанный скрипт, чтобы сделать что-то вроде этого. Экспортируйте данные из базы данных, создайте утилиту для ее обработки и хешируйте все пароли, а затем импортируйте обработанные данные.

И наконец, сделайте это как можно скорее. Обычные пароли в базе данных представляют собой серьезную защиту без-no.

+0

Я загрузил пакет BCrypt и есть 3 файла: BCrypt.Net.dll, BCrypt.Net.pdb, BCrypt.Net.XML. Я вставляю все файлы в папку bin или только DLL-файл? Я не хочу экспортировать данные из db в hash весь пароль, я собираюсь написать функцию, которая считывает весь пароль из db и помещает их в набор данных, для каждой строки в таблице набора данных я использую пароль и обновляю его с помощью функции SQL UPDATE. Что вы думаете об этом подходе? спасибо – ezechiele2517

+0

@ ezechiele2517: Все, что вам нужно, это DLL. XML-файл содержит документацию по API BCrypt Что касается вашего SQL-вопроса, да, это также должно быть приемлемым. – Syon

+0

как насчет файла pdb в пакете BCrypt? Что это за файл? Большое спасибо – ezechiele2517

Смежные вопросы