Задать вопрос
@hooligan377

Авторизация на сайте?

Нужно как-то воссоздать примерный вид авторизации контакта или подобных ресурсов.

В принципе все готово, единственное, как именно хранит контакт информацию пользователя?

Куки? Сессии? И то и то, но как? Что они хранят там, какую информацию?

Или как безопаснее?
  • Вопрос задан
  • 65 просмотров
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 1
mx2828ru
@mx2828ru
Женщина
spoiler
Для реализации авторизации на сайте обычно применяют сочетание сессий и куки, при этом хранят и передают разные данные, чтобы обеспечить безопасность и удобство.


Как обычно хранится информация пользователя?
Сессии (например, в PHP через $_SESSION) хранятся на сервере. В них обычно сохраняют идентификатор пользователя, время последнего доступа и другую служебную информацию. На клиенте в cookie хранится только уникальный идентификатор сессии (например, session id). Именно по этому идентификатору сервер находит нужную сессию при обращении пользователя.

Куки (cookie) — это небольшие данные, которые браузер хранит на стороне клиента. Обычно в них не кладут пароли или чувствительную информацию без шифрования. Но могут хранить, например, токены для "запомнить меня" (persistent login), чтобы после закрытия браузера пользователь оставался авторизован.

Что именно хранят?
В cookie обычно хранится минимум информации: идентификатор сессии или токен (например, JWT).

В сессии на сервере — детальная информация о пользователе и его правах, состояние авторизации.

Что безопаснее?
  • Никогда не храните пароли в куках — только хэшированные данные на сервере.

  • Используйте сессии для хранения информации, привязанной к пользователю, а в куках — уникальные, сложные идентификаторы или токены.

  • Желательно применять HTTPS, чтобы куки не перехватывались.

  • Для повышения безопасности используют httpOnly и Secure флаги в куках, чтобы ограничить доступ к ним из JavaScript и передавать только по защищённому соединению.

  • Также хорошие практики — ограничение времени жизни сессии, защита от CSRF и защита от XSS-атак.


Как реализуют авторизацию на примере?
  1. Пользователь вводит логин и пароль.

  2. Сервер проверяет корректность и создает сессию с уникальным идентификатором.

  3. Идентификатор сессии передается в куку браузера.

  4. При каждом запросе сервер смотрит куку, получает session id, загружает данные сессии и определяет пользователя.

  5. При использовании опции "запомнить меня" сервер может выдать длительный токен, хранящийся в куке, и сверять его с базой.


Таким образом, авторизация — это комбинация сессий и куки, где сессии хранят данные на сервере, а куки — минимальный идентификатор для связи сессии и клиента.


Это общепринятый и безопасный подход для авторизации, который используют такие ресурсы как ВКонтакте или крупные веб-сайты.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы