Хранение секретных вопросов и ответов - хэш или простой текст. - PullRequest
6 голосов
/ 25 декабря 2010

Мои пароли используют sha512, но секретный вопрос и ответы - в виде простого текста. Вопрос в том, нужно ли мне хешировать секретные ответы? Если да, какой тип данных использовать для него, будет ли он все равно char (128)? Я полагаю, секретный вопрос должен быть простым текстом, верно?

Ответы [ 3 ]

5 голосов
/ 25 декабря 2010

Просто избавьтесь от секретных вопросов, это бессмысленная мера:

  1. они не повышают безопасность, они фактически уменьшают их, поскольку довольно легко найти ответ, особенно потому, что, как вы сказали, вокруг будет глупый пользователь, который будет использовать «какой ваш любимый питомец?» как «секретный» вопрос.
  2. они могут вызывать разочарование, так как вы можете написать ответ несколько иначе (или в верхнем / нижнем регистре) при попытке восстановить ваш пароль.
  3. если ваш пароль хешируется, вы не можете вернуть пароль пользователю, вам придется отправить ему / ей электронное письмо с новым паролем или ссылку для его изменения, так почему бы просто не позволить пользователю введите его адрес электронной почты в первую очередь?
  4. это просто еще одно дополнительное поле, которое необходимо заполнить при регистрации. Там уже слишком много ...
3 голосов
/ 25 декабря 2010

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

Один вопрос, однако, пользователи вводят свой вопрос или они выбирают из списка? Если из списка, почему бы просто не использовать идентификатор, для которого использовался вопрос, и указать потенциальные вопросы в другой таблице или жестко запрограммировать в сценарии?

1 голос
/ 24 июля 2012

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

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

Возвращаясь к OP, если вы все еще используете их, одна из причин , а не для их хеширования, - это вторая точка зрения Нико - если ответ «Св. Облако» и человек набирает «Св. Облако»msgstr ", плохо написанная система может запретить перезагрузку.Но администратор увидит, что ответ, очевидно, правильный, если ответы не были хешированы.Если бы ответы были хешированы, невозможно было бы узнать, был ли пользователь даже близко.

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