Я разрабатываю модуль входа. Мне просто интересно, какая предпочтительная длина для имени пользователя и пароля вы когда-либо позволяли и почему?
Спасибо заранее!
Я разрабатываю модуль входа. Мне просто интересно, какая предпочтительная длина для имени пользователя и пароля вы когда-либо позволяли и почему?
Спасибо заранее!
Нет смысла указывать произвольное ограничение размера на имена пользователей. Но если вам нужно (например, для ширины столбца базы данных), вы должны сделать его достаточно большим, чтобы не жалеть об этом в будущем. (Когда я работаю, имена учетных записей - 8 символов, причем первые два символа одинаковы для всех сотрудников... duh!)
Это BAD IDEA, чтобы установить ограничение по размеру паролей.
Основная причина, по которой это плохая идея, заключается в том, что чем дольше будет пароль пользователей, тем больше энтропии она будет иметь, и, следовательно, сложнее будет угадать. Ограничивая длину пароля, вы потенциально можете заставить пользователя использовать плохой пароль. (Не то, что типичные пользователи нуждаются в большом количестве... к сожалению.)
Вторая причина заключается в том, что он предполагает, что вы храните пароли в таблице базы данных. Это было бы БОЛЬШОЙ ОШИБКОЙ, поскольку это потенциально может привести к сбою паролей пользователей, если ваша системная безопасность скомпрометирована. Вы должны хранить засоленный криптографический хэш пароля пользователя (который может иметь ограниченный размер) в базе данных и проверять тендерный пароль путем его хэширования и сравнения с сохраненным хешем.
Если вы говорите о минимальной длине (для паролей), вам, вероятно, следует сосредоточиться на энтропии, а не на длине пароля. (Пароль, состоящий из 20 "1", менее безопасен, чем случайная последовательность из 6 символов.)
Думаю, я пойду за этим ответом. Заселенный криптографический хэш открывает мой разум, я больше не должен беспокоиться о длине, плюс он более защищен. Спасибо!
(Должен быть солен... мой плохой.)
Я просто хочу исправить возможное непонимание того, что я сказал выше. Длинный пароль не обязательно является хорошим паролем (на пример). Но это не значит, что вы не должны "беспокоиться о длине". Слишком короткие пароли (даже случайные) слишком легко угадать.
Если ваша цель состоит в том, чтобы препятствовать/запрещать пользователям устанавливать пароли, которые легко угадать, тогда вы должны использовать какой-то механизм проверки качества пароля, чтобы отсеять "плохие" в то время, когда пользователь устанавливает/сбрасывает свой или ее пароль.
Поиск в Google для "энтропии паролей" или "параметров энтропии пароля" даст вам несколько результатов. И вот один из соседних:
(Примечание: крипто-хэш-подход - это НЕ ХРАНЕНИЕ пароля... не о длине пароля. Плохой пароль будет небезопасным, независимо от того, как ваше программное обеспечение обрабатывает его.)
Пределы пользователей не являются большой проблемой, если вы не беспокоитесь о минимизации размера базы данных; но если это вызывает беспокойство, я сомневаюсь, что многие пользователи имеют имена пользователей длиной более 64 символов.
Что касается паролей, я не люблю устанавливать жесткие верхние пределы; так как я идеально беру засоленный хэш пароля, прежде чем я его сохраню в базе данных, он будет иметь фиксированную длину (из-за хеш-функции), и поэтому ограничение длины пароля не уменьшает размер базы данных вообще. Поэтому, если кто-то хочет использовать случайно генерируемый 128-символьный пароль, они могут идти прямо вперед - более безопасно таким образом.
Для меня я создаю имя пользователя varchar (25) и пароль varchar (100), почему? потому что я уже создал множество учетных записей, и я узнал, что максимальная длина создания имени пользователя равна 21, а пароль - 26, но при шифровании пароля гораздо лучше использовать большой:)
желаем, чтобы это помогло вам
По-моему, каждый человек несет ответственность за свой логин и веб-приложение, которое раздражает кого-то с ненужными правилами, а не тот, который я бы использовал. Итак, сделайте свой собственный разум.
В целом, если вы что-то не продаете, а небезопасный вход влияет на ваши собственные данные, он должен быть как можно более экономичным, означает пароль RANDOM (например: http://www.pctools.com/guides/password/) и, конечно, хранится в базе данных зашифрованной.
Изменить: Шифрование пока недостаточно, хеширование лучше, но все же не лучший подход. Хеширование и соление или растяжение хэшей намного лучше. Хорошие сообщения являются, например, Лучший способ сохранить пароль в базе данных или https://nakedsecurity.sophos.com/2013/11/20/serious-security-how-to-store-your-users-passwords-safely/.