Как сохранить имя пользователя в базе данных под GDPR? - PullRequest
0 голосов
/ 14 ноября 2018

Это , а не , дубликат Как обрабатывать электронные письма как имена пользователей в GDPR? , потому что мой вопрос связан с производительностью.

У меня есть приложение, которое яхочу обеспечить соблюдение GDPR.

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

Я искал другие вопросы, например этот , но я не могу найти ни одной с той же проблемой, что и у меня.

Мой вопрос связан с тем, какЯ должен сохранить и проверить имя пользователя в базе данных.

Подход, о котором я думал, состоит в том, чтобы иметь три столбца:

  1. username_encrypted (ключ шифрования будет вне базы данных, и база данных будетнет доступа к нему)
  2. соль
  3. username_hash: хэш (имя пользователя + соль)

Когда я хочу получить имя пользователя в виде простого текста, я получаюusername_encrypted и я расшифровываю его.

Когда я хочу подтвердить имя пользователя, для каждого пользователя в базе данных я должен Вариант 1 :

  1. Вычислить хэш с помощьюсоль пользователя (соль различна для каждого пользователя) (хеш (имя пользователя + соль))
  2. Сравните результат предыдущего пункта со столбцом username_hash

Итак, мой вопрос: Есть ли другой способ достичьта же цель без вычисления хеша всех пользователей?Для небольшой базы данных это не может быть проблемой.Но для большой базы данных это может иметь большое влияние.

Если это актуально, я использую базу данных PostgreSQL.

Проверьте имя пользователя Опция 2 (см. Nosajimikiответ / комментарий ниже):

  1. Иметь глобальную соль для всех пользователей, а столбец username_hash вычисляется с глобальной солью
  2. Вычислять хеш (hash (username + global_salt))
  3. Сравните результат предыдущей строки со столбцом username_hash

1 Ответ

0 голосов
/ 14 ноября 2018

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

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

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

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