Autms Forms - Как предотвратить дублирование учетной записи пользователя, зная только расширенную информацию пользователя? - PullRequest
0 голосов
/ 02 февраля 2009

У меня странная дилемма. Пожалуйста, терпите меня, когда я пытаюсь это объяснить!

Я использую проверку подлинности с помощью форм и сохраняю дополнительную информацию о пользователе в другой таблице (ссылка на UserID из Forms Auth, зашифрованный SSN, значение Salt). Когда пользователи регистрируются на сайте, я спрашиваю SSN, DOB и LName и проверяю их в нашей системе перед созданием учетной записи. Я хочу определить, имеет ли этот SSN учетную запись, связанную с ним в формах аутентификации. Поскольку SSN зашифрован с использованием соли, я не могу выполнить поиск, не просматривая каждую строку.

Мне нужна только 1 учетная запись пользователя на SSN. Использование значения соли нарушает это.

На мой взгляд, единственный способ обойти это - использовать общий алгоритм шифрования для SSN. Когда пользователь вводит его, я применяю тот же алгоритм шифрования и смотрю, есть ли совпадение значений в таблице расширенных свойств пользователя.

Это достаточно безопасно?

Ответы [ 3 ]

1 голос
/ 02 февраля 2009

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

1 голос
/ 03 февраля 2009

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

Приложение должно получить ключ из безопасного хранилища ключей, которое затем можно использовать для шифрования / дешифрования информации. Таким образом, вы можете продолжать хранить конфиденциальную информацию в базе данных, тем самым защищая вашу информацию, и применить другой механизм (обычно безопасность файловой системы) для защиты вашего хранилища ключей.

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

0 голосов
/ 02 февраля 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...