Подтвердить что ты не робот

Рекомендации по верификации/аутентификации в Интернете?

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

Каковы другие хорошие советы или хорошие требования для пользовательской части веб-сайта? Например, если пользовательские имена должны быть выбраны пользователем или должны быть адресами электронной почты? Любые ошибки для части регистрации пользователя? (CAPTCHA, вероятно, стоит целая тема самостоятельно.) Какие-нибудь подводные камни для паролей reset? Что-нибудь еще?

Edit:

Несколько дублируется здесь: best-practices-for-login-pages

4b9b3361

Ответ 1

Шифрование

Вчера был вопрос об этом: "Почему я должен беспокоиться о хэшировании паролей?, который охватывает все причины, почему вы должны это делать.

Captcha

Я не согласен с Рикардо в пункте "captcha point" - всегда требую капчу, даже на самом деле непопулярные сайты попадают под спаммеры. У меня есть блоги, которые я настроил для проверки некоторых битов кода, с которыми я никогда не связывался нигде, которые были чудом найдены спамерами. Когда спамер запустил ваш сайт с числами идентичных сообщений о виагре, вы не пожалеете, что не принимаете дополнительные 20 минут, чтобы установить капчу. reCaptcha содержит плагины, которые делают установку довольно просто, и вы помогаете им копировать книги.

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

Забыли пароль

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

Письма

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

Проверка формы

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

Сама аутентификация

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

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

Ответ 2

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

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

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

CAPTCHA - хорошая идея, просто убедитесь, что это не сложно определить, что тоже может расстраивать.

Есть много вещей для рассмотрения и несколько вариантов для каждого, но, надеюсь, это поможет вам начать.

Ответ 3

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

Ответ 4

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

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

Некоторыми примерами такого API будут Facebook, Google, LinkedIn, Twitter, Dribbble. Выберите свой вариант в соответствии с идеей пользовательской базы, на которую вы будете нацелены.

Кроме того, в моем недавнем опыте структура hello.js делает это задача довольно проста.

Ответ 5

MSDN опубликовала статью, затрагивающую некоторые из этих проблем; копия доступна здесь. Большинство предложений здесь отражают идеи; одна дополнительная идея этой статьи - "отслеживать трафик через вашу регистрационную последовательность". Отслеживайте показы в области ошибок, предупреждений и восстановления системы, чтобы убедиться, что вам нужно сделать некоторые улучшения удобства использования.