2015-07-31 7 views
0

Если вы хотите ограничить количество возможных символов, которые могут быть использованы для пароля в моей базе данных (mysql), просто я задаю тип varchar (#of chars), например: varchar (15). Для 15 максимальных символов, которые можно использовать?Ограничение количества символов для паролей?

+4

Вы должны прочитать хэширование пароля. Ограничение длины пароля редко, если вообще когда-либо, хорошая идея. – spenibus

+1

Пожалуйста, ** не ** ограничивайте длину пароля. Кроме того, не ограничивайте набор символов паролем. * Всегда * хешировать пароль и хранить хеш, а не пароль открытого текста. Это подразумевает, что должен быть механизм для установки нового пароля при забытии старого. – wallyk

ответ

2

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

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

Но еще лучше, не ограничивайте длину пароля. Чем длиннее, тем лучше для надежных паролей!

+0

«Возможно, это может вызвать у него проблемы позже, если он изменит свой пароль и изменит только последние несколько символов - вам будет тот же пароль с 15 символами». Кроме того, если вы когда-либо сделаете столбец длиннее, все с паролями длиннее 15 неожиданно перестанут работать. – ceejayoz

+0

Я согласен с основанием этого, хотя, вероятно, нет дополнительной стоимости для паролей дольше, чем, скажем, 128 символов. Это побуждает меня задаться вопросом, каковы возможности для отказа в обслуживании, если злоумышленник пытается отправить пароли, близкие к пределу размера сообщения, который (я думаю) 2M по умолчанию в PHP и более широкий для всего сайта на некоторых системах, чтобы для больших загрузок файлов. Хеширование паролей такого рода не может быть хорошим для CPU. – halfer

2

Я думаю, что вы находитесь в очень плохом настроении, когда дело доходит до паролей. Вот несколько вещей, которые следует учитывать при работе с паролями.

  1. Вы никогда не должны хранить простые пароли в БД. Перед сохранением всех паролей следует хэшировать. Стандартным стандартом является использование хэширования bcrypt. Он создает 60 character long string.

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

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

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

Если я пропустил что-либо, оставьте это в комментариях, и я отредактирую ответ соответствующим образом.

+1

1.) md5 не является шифрованием. 3.) Соление не обеспечивает безопасность для использованного входа. Это позволяет избежать того, что пароль может быть восстановлен из хэша с использованием таблиц радуги.(Также он гарантирует, что - если злоумышленник получит доступ, - он не смог восстановить все пароли с одним «ходом», но нуждался в индивидуальной соли за пароль) – dognose

+1

Пожалуйста, не рекомендуем MD5 для хеширования паролей. Когда-либо. – ceejayoz

+0

Вы правы. Я пытался сказать, что пароли должны быть зашифрованы или хэшированы. На самом деле это не означало, что MD5 был алгоритмом шифрования. Что касается соления, вы снова верны, если кто-то уже успел завладеть вашей БД. Однако, в зависимости от того, как вы создаете соль, это может быть дополнительная безопасность. – khuderm

Смежные вопросы