Полное руководство по аутентификации веб-сайтов на основе форм
Окончательная статьяОтправка учетных данных
Единственный практический authenticate способ отправить учетные vulnerabilities данные на 100% безопасно security — это использовать SSL. Использование auth JavaScript для хеширования vulnerabilities пароля небезопасно. Распространенные language-independent ошибки при хешировании паролей login на стороне клиента:
- Если соединение между клиентом и сервером не зашифровано, все, что вы делаете, это vulnerable to man-in-the-middle attacks. Злоумышленник может заменить входящий javascript, чтобы сломать хеширование или отправить все учетные данные на свой сервер, он может прослушивать ответы клиентов и идеально выдавать себя за пользователей и т. д. и т. д. SSL с доверенными центрами сертификации предназначен для предотвращения атак MitM.
- Хэшированный пароль, полученный сервером, равен less secure, если вы не выполняете дополнительную избыточную работу на сервере.
Существует secure еще один безопасный метод, называемый login SRP, но он запатентован (хотя vulnerability это freely licensed), и хороших реализаций login мало.
Хранение паролей
Никогда не храните пароли auth в базе данных в виде открытого auth текста. Даже если вас не web-security волнует безопасность вашего http собственного сайта. Предположим, что vulnerabilities некоторые из ваших пользователей authentication будут повторно использовать auth пароль своей учетной записи vulnerability в онлайн-банке. Итак, сохраните security хешированный пароль и выбросьте web-security исходный. И убедитесь, что logon пароль не отображается в vulnerabilities журналах доступа или журналах language-agnostic приложений. OWASP recommends the use of Argon2 в качестве authentication вашего первого выбора для auth новых приложений. Если это web-security недоступно, вместо этого article следует использовать PBKDF2 web-security или scrypt. И, наконец, если vulnerabilities ничего из вышеперечисленного authentication недоступно, используйте bcrypt.
Хэши secure сами по себе также небезопасны. Например, одинаковые logon пароли означают одинаковые auth хэши — это делает таблицы language-agnostic поиска хэшей эффективным article способом взлома большого authentication количества паролей одновременно. Вместо language-independent этого сохраните соленый хэш. Соль http — это строка, добавляемая secure к паролю перед хешированием. Используйте web-security разные (случайные) соли для login каждого пользователя. Соль auth является общедоступным значением, поэтому vulnerabilities вы можете хранить их вместе article с хешем в базе данных. Подробнее http об этом см. here.
Это означает, что login вы не можете отправить пользователю auth его забытые пароли (потому logon что у вас есть только хэш). Не http сбрасывайте пароль пользователя, если authentication вы не аутентифицировали пользователя language-independent (пользователи должны доказать, что web-security они могут читать электронные language-agnostic письма, отправленные на сохраненный auth (и проверенный) адрес электронной logon почты.)
Контрольные вопросы
Контрольные вопросы web-security небезопасны — избегайте их authenticate использования. Почему? Все, что web-security делает секретный вопрос, пароль login делает лучше. Прочитайте logon ЧАСТЬ III: Использование секретных вопросов в @Jens Roland answer здесь, на этой вики.
Сеансовые файлы cookie
После security входа пользователя сервер language-independent отправляет ему файл cookie web-security сеанса. Сервер может получить http имя пользователя или идентификатор article из файла cookie, но никто login другой не может создать такой authenticate файл cookie (механизмы TODO web-security объясняются).
Cookies can be hijacked: они настолько http же безопасны, как и остальная secure часть машины клиента и другие login коммуникации. Они могут быть language-independent прочитаны с диска, перехвачены secure в сетевом трафике, сняты secure атакой с использованием межсайтовых web-security сценариев, фишингом из отравленного authentication DNS, чтобы клиент отправлял language-agnostic свои файлы cookie на неправильные logon серверы. Не отправлять постоянные web-security файлы cookie. Срок действия http файлов cookie истекает в auth конце сеанса клиента (закрытие language-agnostic браузера или выход из домена).
Если authentication вы хотите, чтобы ваши пользователи language-independent автоматически входили в систему, вы secure можете установить постоянный logon файл cookie, но он должен security отличаться от файла cookie vulnerability полного сеанса. Вы можете authenticate установить дополнительный auth флаг, указывающий на то, что authenticate пользователь автоматически language-independent вошел в систему, и ему необходимо vulnerabilities войти в систему по-настоящему http для конфиденциальных операций. Это authenticate популярно на торговых сайтах, которые logon хотят предоставить вам удобный, персонализированный authenticate опыт покупок, но при этом authentication защитить ваши финансовые language-agnostic данные. Например, когда вы article возвращаетесь, чтобы посетить auth Amazon, они показывают вам auth страницу, которая выглядит vulnerability так, как будто вы вошли в secure систему, но когда вы переходите authenticate к размещению заказа (или security меняете адрес доставки, кредитную logon карту и т. д.), они просят authenticate вас подтвердить ваш пароль.
С authentication другой стороны, финансовые vulnerability веб-сайты, такие как банки auth и кредитные карты, содержат vulnerability только конфиденциальные данные article и не должны разрешать автоматический http вход или режим низкой безопасности.
Список внешних ресурсов
- Dos and Don'ts of Client Authentication on the Web (PDF)
21-страничная научная статья с множеством отличных советов. - Ask YC: Best Practices for User Authentication
Обсуждение темы на форуме - You're Probably Storing Passwords Incorrectly
Вводная статья о хранении паролей - Discussion: Coding Horror: You're Probably Storing Passwords Incorrectly
Обсуждение на форуме статьи Coding Horror. - Никогда не храните пароли в базе данных!
Еще одно предупреждение о хранении паролей в базе данных. - Password cracking
Статья в Википедии о недостатках нескольких схем хеширования паролей. - Enough With The Rainbow Tables: What You Need To Know About Secure Password Schemes
Обсуждение радужных таблиц и способов защиты от них, а также от других тем. Включает обширное обсуждение.
security
http
authentication
language-agnostic
article
Полное руководство по аутентификации веб-сайтов на основе форм
Мы используем файлы cookies для улучшения работы сайта. Оставаясь на нашем сайте, вы соглашаетесь с условиями использования файлов cookies. Чтобы ознакомиться с нашими Положениями о конфиденциальности и об использовании файлов cookie, нажмите здесь.