Можно ли сохранять соль пользователя в той же таблице, что и хеш пароля? - PullRequest
10 голосов
/ 16 июня 2011

Это нормально и не бесполезно?Его можно сохранить в другой таблице или даже в другой базе данных.

Как вы думаете?

PS Для большей безопасности у меня тоже есть постоянные солевые "арахисы".Это постоянное значение сохраняется в файле конфигурации (не в базе данных).Поэтому, если хакер хочет каким-то образом взломать пароль, ему также необходим доступ к файловому серверу и базе данных.

Ответы [ 2 ]

22 голосов
/ 16 июня 2011

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

Если вы используете соль + арахис + пароль для создания хэша пароля, то я бы сказал, что ваш проект безопаснее, чем 80% систем, то есть достаточно безопасен, не выходя за рамки паранойи. .


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

3 голосов
/ 16 июня 2011

Вы хотите сохранить 1) соль для каждого пользователя и 2) результат хеширования пароль + соль).Вы не хотите хранить сам пароль.

...