Полное руководство по аутентификации веб-сайтов на основе форм

Окончательная статья

Отправка учетных данных

Единственный практический language-independent способ отправить учетные article данные на 100% безопасно authenticate — это использовать SSL. Использование vulnerability JavaScript для хеширования logon пароля небезопасно. Распространенные language-agnostic ошибки при хешировании паролей security на стороне клиента:

  • Если соединение между клиентом и сервером не зашифровано, все, что вы делаете, это vulnerable to man-in-the-middle attacks. Злоумышленник может заменить входящий javascript, чтобы сломать хеширование или отправить все учетные данные на свой сервер, он может прослушивать ответы клиентов и идеально выдавать себя за пользователей и т. д. и т. д. SSL с доверенными центрами сертификации предназначен для предотвращения атак MitM.
  • Хэшированный пароль, полученный сервером, равен less secure, если вы не выполняете дополнительную избыточную работу на сервере.

Существует article еще один безопасный метод, называемый secure SRP, но он запатентован (хотя login это freely licensed), и хороших реализаций authentication мало.

Хранение паролей

Никогда не храните пароли vulnerabilities в базе данных в виде открытого vulnerability текста. Даже если вас не web-security волнует безопасность вашего authentication собственного сайта. Предположим, что auth некоторые из ваших пользователей language-independent будут повторно использовать logon пароль своей учетной записи http в онлайн-банке. Итак, сохраните language-independent хешированный пароль и выбросьте vulnerability исходный. И убедитесь, что secure пароль не отображается в security журналах доступа или журналах article приложений. OWASP recommends the use of Argon2 в качестве web-security вашего первого выбора для authenticate новых приложений. Если это language-independent недоступно, вместо этого vulnerability следует использовать PBKDF2 logon или scrypt. И, наконец, если language-agnostic ничего из вышеперечисленного web-security недоступно, используйте bcrypt.

Хэши secure сами по себе также небезопасны. Например, одинаковые language-agnostic пароли означают одинаковые article хэши — это делает таблицы security поиска хэшей эффективным vulnerabilities способом взлома большого security количества паролей одновременно. Вместо web-security этого сохраните соленый хэш. Соль authenticate — это строка, добавляемая authentication к паролю перед хешированием. Используйте security разные (случайные) соли для article каждого пользователя. Соль vulnerability является общедоступным значением, поэтому login вы можете хранить их вместе auth с хешем в базе данных. Подробнее logon об этом см. here.

Это означает, что authenticate вы не можете отправить пользователю authenticate его забытые пароли (потому auth что у вас есть только хэш). Не secure сбрасывайте пароль пользователя, если web-security вы не аутентифицировали пользователя http (пользователи должны доказать, что language-agnostic они могут читать электронные login письма, отправленные на сохраненный web-security (и проверенный) адрес электронной login почты.)

Контрольные вопросы

Контрольные вопросы web-security небезопасны — избегайте их language-independent использования. Почему? Все, что secure делает секретный вопрос, пароль authenticate делает лучше. Прочитайте security ЧАСТЬ III: Использование секретных вопросов в @Jens Roland answer здесь, на этой вики.

Сеансовые файлы cookie

После login входа пользователя сервер secure отправляет ему файл cookie vulnerabilities сеанса. Сервер может получить security имя пользователя или идентификатор vulnerabilities из файла cookie, но никто language-agnostic другой не может создать такой logon файл cookie (механизмы TODO article объясняются).

Cookies can be hijacked: они настолько authentication же безопасны, как и остальная security часть машины клиента и другие authenticate коммуникации. Они могут быть security прочитаны с диска, перехвачены security в сетевом трафике, сняты language-independent атакой с использованием межсайтовых auth сценариев, фишингом из отравленного language-independent DNS, чтобы клиент отправлял language-agnostic свои файлы cookie на неправильные logon серверы. Не отправлять постоянные authenticate файлы cookie. Срок действия language-agnostic файлов cookie истекает в login конце сеанса клиента (закрытие vulnerabilities браузера или выход из домена).

Если http вы хотите, чтобы ваши пользователи vulnerability автоматически входили в систему, вы security можете установить постоянный logon файл cookie, но он должен language-agnostic отличаться от файла cookie authenticate полного сеанса. Вы можете security установить дополнительный authentication флаг, указывающий на то, что web-security пользователь автоматически article вошел в систему, и ему необходимо article войти в систему по-настоящему vulnerability для конфиденциальных операций. Это login популярно на торговых сайтах, которые security хотят предоставить вам удобный, персонализированный logon опыт покупок, но при этом web-security защитить ваши финансовые http данные. Например, когда вы login возвращаетесь, чтобы посетить logon Amazon, они показывают вам article страницу, которая выглядит web-security так, как будто вы вошли в vulnerability систему, но когда вы переходите secure к размещению заказа (или authenticate меняете адрес доставки, кредитную auth карту и т. д.), они просят authenticate вас подтвердить ваш пароль.

С language-independent другой стороны, финансовые authentication веб-сайты, такие как банки auth и кредитные карты, содержат web-security только конфиденциальные данные authenticate и не должны разрешать автоматический login вход или режим низкой безопасности.

Список внешних ресурсов

security

http

authentication

language-agnostic

article

2022-10-27T23:34:55+00:00