2014-01-13 4 views
1

Я кодирую защиту для веб-сайта в выражениях express.js и postgresql db. Теперь я читал о соле и хэшировании, и у меня есть код, настроенный с помощью pdkdf2, используя крипто-модуль, но моя проблема заключается в том, как я буду структурировать таблицу учетных записей в db. Что делать, если я создам роль входа, которая будет иметь зашифрованный формат MD5 для пароля, причем этот пароль будет производным ключом из «хеширования» соли n. Будет ли это чрезмерным защитой?Безопасность сведений о пользователе с использованием соли n hash и роль входа в postgresql

Будет таблица, которая будет выглядеть следующим образом: UID (идентификатор из учетной записи), СОЛЬ, ХАШ. А также loginrole.

Итак, попробовав аутентификацию, код попытается войти в качестве этой роли, сначала получив ассоциированный UID, генерируя пароль соляного пароля для предоставленного пароля и auth на уровне БД.

Надеется, что я делаю какой-то смысл ..

 var usrSalt = crypto.randomBytes('128').toString('base64'); 
     //text , salt ,iterations , keylen , callback 
     crypto.pbkdf2(usr, usrSalt, 10000, 512, function (err, derivedKey) { 
      if (err) { console.log(err); } 
      else { 
       usr = derivedKey; 
       next(); 
      } 
     }); 

P.S бы лучше снова быть модулем pgcrypto в том же сценариях, просто удалив код на Node.js.

ответ

0

Этот ответ находится на более высоком уровне, а не на низком уровне фактического кода.

«Overkill of protection» относится к вашему проекту. Итерации 10000 потребуют определенного количества времени, а MD5 обеспечит некоторый уровень шифрования. Оба могут быть подходящими для вашего проекта и должны оцениваться как приоритет по сравнению с другими аспектами (скорость, возможности и т. Д.).

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

Выбор для pgcrypto аналогичен. Если он такой же, как и код, который вы планируете написать (он дефакторен более проверен, чем ваш текущий код), его обработка будет на вашем сервере БД. Хорошо держать его у сервера Node? Легко поддерживать? Меньше работы? «Лучше» будет относительно вашего проекта.

0

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

Трудно понять, что вы имеете в виду со второй частью, поскольку это используется для авторизации на уровне БД. Обычно вы либо выполняете аутентификацию на уровне приложения, используя свои собственные имена пользователей/пароли, или, вы создаете реальных пользователей в PostgreSQL и позволяете PostgreSQL их аутентифицировать, просто передавая свой пароль и имя пользователя через PostgreSQL при создании соединения.

Есть промежуточный путь, к которому вы, возможно, пытаетесь добраться. Аутентифицируйте пользователя самостоятельно, затем используйте SET SESSION AUTHORIZATION, чтобы ваш сеанс базы данных PostgreSQL стал «этим». Это немного специализированный подход, и не тот, который я обычно использую большую часть времени. В основном он используется пул соединения.

Смотрите также:

+0

в Уре втором абзаце, что если мы оба? вот что я пытаюсь объяснить в вопросе.Если мы создадим логин, содержащий пароль, который уже хэширован, а затем сохранен в логине с использованием MD5-шифрования, тогда, когда нам нужно auth, мы берем соль из таблицы, которую мы «привязали» к ней с уникальным идентификатором входа , – Drakoumel

+0

@drakoumelitos Отображение * кода * может помочь сделать это понятным. Я предполагаю, что вы говорите, что вы «СОЗДАЛИ ПОЛЬЗОВАТЕЛЯ» в БД, но у вас есть своя отдельная таблица паролей с сохраненным там именем пользователя или пользователя. Вы выполняете аутентификацию пользователя в соответствии с вашей собственной пользовательской таблицей, а затем «УСТАНОВИТЕ СЕЗОНУ АВТОРИЗАЦИЮ», чтобы «стать» этим пользователем в БД. Правильно ли это, что вы делаете? –

+0

Мне было бы неплохо, если бы я мог показать, что я имею в виду, но я не могу действительно показать u образ БД: P закрыть, i СОЗДАТЬ ПОЛЬЗОВАТЕЛЯ в БД и дать ему пароль, который уже hashed n salted, и хранить соль в другой таблице привязывает ее к уникальному идентификатору, который имеет ПОЛЬЗОВАТЕЛЬ. мой вопрос в том, что если это слишком много или слишком много – Drakoumel

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

  • Нет связанных вопросов^_^