2012-02-26 2 views
1

я думал, отправив письмо с md5 пароля в качестве маркеров и проверить, если электронная почта + пароль правильна перед показом восстановления формы пароляНасколько небезопасным является пользовательский пароль md5 в качестве токена в электронной почте для восстановления пароля?

1) пользователь вводит почту

2) если почта существует, отправьте электронная почта, чтобы с ним с паролем в качестве маркеров

3), когда пользователь нажимает на ссылку: проверьте почту и md5 пароль правильны, если так:

4) показать пароль форма генератора

-EDIT-

Итак, как можно безопаснее без добавления столбца в таблицу пользователя?

+1

Очень опасно. Злоумышленнику нужно знать только адрес электронной почты + хэш – knittl

+0

Когда хакер знает сумму md5 - он может использовать метод bruteforce для получения пароля. – Kamil

+0

@Kamil: нет, когда используется хэш, или используется библиотека, такая как 'bcrypt'. – knittl

ответ

5

Это, по крайней мере, теоретически небезопасно. См. md5 decoding. How they do it? и MD5 security is fine?

Но зачем это делать в первую очередь? Следующие были бы гораздо более безопасными и только незначительно сложнее реализовать:

  1. Генерируйте случайный ключ, например. 123456789abc
  2. Хранить его в записи пользователя
  3. Добавить ключ к URL lookup.php?key=123456789abc
  4. Когда пользователь нажимает на URL, искать ключ, чтобы найти правильный адрес электронной почты.
  5. Как только операция завершена, удалите ключ.

Дайте ключу жизни в течение, скажем, 24 часов, так что нелегитимные запросы исчезают.

+0

, пожалуйста, отредактируйте править –

+0

@Toni Почему вы не можете добавить столбец в таблицу? –

+0

, потому что я должен открыть петицию, которая, вероятно, займет недели ... –

0

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

Когда вы отправляете что-то, что связано с паролем (например, хэш), чем вы даете подсказку, которую вам не нужно выдавать. Там есть таблицы, чтобы сделать обратную сторону md5'hash, и это можно использовать для угадывания пароля.

Подумайте о случайной строке как session id.

+2

Это не отвечает на его вопрос. – Gumbo

+0

все еще его самый безопасный способ для токена. – Lucy

+0

@ Lucy: какой самый безопасный способ? Использовать md5? почему безопаснее использовать md5, чем случайную строку? –

1

Я уверен, это не очень хорошая идея: если это письмо попадает в чужие руки, это дает злоумышленнику автономный вектор против MD5 - это означает, что он дает ему пароль, если он быстрее, чем реальный пользователь.

Используйте соление и более интенсивный процесс расчета.

+1

Это также относится к случайному токену. Единственное различие заключается в том, что случайный токен не имеет другого смысла. – Gumbo

+1

IAUC OQ был, если пароль MD5-hashed безопасен. Мой ответ: ** НЕТ **, и я никогда не упоминал случайный токен. Использование соли и лучшее (в том числе более дорогое) хеширование должно снизить риск от «очень реального» до «гипотетического» –

+0

После редактирования OP: использование ** безопасного ** соленого пароля хеша будет работать, не касаясь таблицы пользователя. Это не означает, что просто создание дополнительной таблицы и использование чего-то другого, кроме пароля, не будет более безопасным. –

1

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

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

+1

Я не понимаю нисходящего. ОП не просит альтернативных (и лучших) методов, (а) он спрашивает, безопасно это или нет. Это не лучшая практика, но я думаю, что сценарий с «скомпрометированным электронной почтой» не представляет интереса, поскольку почти каждый метод «уязвим» к этому. –

+0

Я не согласен, адреса электронной почты (в основном) «общедоступны», поэтому получите MD5 пароля, просто зная, что это не безопасно. –

+1

Но хэш MD5 отправляется только ** на ** этот адрес электронной почты. Чтобы прочитать его, у вас должен быть доступ к этой учетной записи электронной почты. –

0

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

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