Альтернатива хэшу и соли для идентификационного номера социального страхования / правительства

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

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

Я хотел бы знать 2 вещи:

  1. Это хороший подход? Или есть какая-то другая обычная практика, которая достигнет того же самого результата.
  2. Под PHP, единственная опция из библиотеки std — это функция crypt ()?

0

Решение

crypt отлично подходит для следующих предостережений:

  • Если вы используете пользовательские данные в качестве соли, вы строго ограничиваете их случайность. Выберите что-то вроде openssl_random_pseudo_bytes вместо.
  • Не бойтесь хранить соль на столе. по факту attr_encryptedпопулярный гем Ruby on Rails делает это. Просто убедитесь, что вы генерируете уникальную соль для каждой записи. Никогда не используйте соль повторно.
  • Убедитесь, что вы не используете сломанный метод шифрования, такой как DES или SHA-1. Вы можете указать CRYPT_BLOWFISH или же CRYPT_SHA512,
1

Другие решения

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

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

1

По вопросам рекламы [email protected]