Состояние веб-аутентификации – сеанс против Cookie?

Каков наилучший способ аутентификации и отслеживания состояния аутентификации пользователей со страницы на страницу? Некоторые говорят о состоянии сеанса, некоторые говорят, что куки?

Могу ли я просто использовать переменную сеанса, которая имеет идентификатор пользователя и после аутентификации, установить пользовательский class пользователя, который имеет информацию пользователя. Затем, на каждой странице, проверьте, что переменная сеанса по-прежнему активна и доступ к базовым пользовательским данным из объекта User?

Есть предположения? Какие-нибудь хорошие примеры?

Нет идеального способа сделать это. Если вы сохраните его в файле cookie, вы поймете, что куки могут быть украдены. Если вы храните его в сеансе, вы будете использовать flak, потому что сеансы могут быть захвачены.

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

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

Проблема с предпочтением сеансов над куки-файлами для «безопасности» заключается в том, что сеансы используют cookies USE для идентификации пользователя, поэтому любые проблемы с куки-файлами присутствуют в сеансах.

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

Поскольку вы используете .NET, вам в основном придется написать собственный провайдер хранилища сеансов, чтобы обработать это, так как InProc не будет масштабироваться за один сервер, поставщик базы данных просто плохая идея (все дело в том, что AVOID DB читает здесь при масштабировании, а не добавлять больше), а у StateServer много проблем с пропускной способностью. (Раньше я использовал провайдера хранилища memcached с некоторым успехом для борьбы с этой проблемой).

Я хотел бы использовать Google для подписанных файлов cookie и изучать их использование вместо обычных файлов cookie или сеансов. Он решает множество проблем безопасности и устраняет проблемы локальности с сеансами. Имейте в виду, что они приходят туда и обратно по каждому запросу, поэтому экономно хранят данные.

Я не знаю, является ли его ЛУЧШИМ способом сделать это, но нам комфортно с тем, как мы это делаем.

у нас есть пользовательский объект, который мы создаем при аутентификации пользователя, затем мы используем Session для поддержки этого объекта в приложении.

В некоторых приложениях мы объединяем его с использованием файлов cookie для непрерывного продления сеанса.

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

Сессии – это cookies …

  • Безопасность MD5 в порядке?
  • Почему JPasswordField.getPassword () создает строку с паролем в ней?
  • Где хранить JWT в браузере? Как защитить от CSRF?
  • Запомнить меня?
  • Зашифрованы ли заголовки HTTPS?
  • Перенаправить на страницу с помощью endResponse в true VS CompleteRequest и stream безопасности
  • Как правильно управлять закрытым ключом
  • Какова цель кодирования базы 64 и почему она используется в базовой аутентификации HTTP?
  • Аутентификация против авторизации
  • Каков наилучший способ реализовать «запомнить меня» для веб-сайта?
  • Как создать самозаверяющий сертификат для подписи кода в Windows?
  • Interesting Posts
    Давайте будем гением компьютера.