аутентификация sessionid против cookie - PullRequest
8 голосов
/ 23 июня 2011

Я пытаюсь выяснить плюсы и минусы использования аутентификации на основе сеанса против аутентификации на основе куки

Насколько я вижу в аутентификации на основе файлов cookie

  • Пользователь отправляет запрос на вход в систему, отправляя свои учетные данные
  • Учетные данные сверяются с базой данных
  • Cookie будет установлен с данными пользователя
  • Это будет сделано через https, и куки будут зашифрованы.
  • В .net, если это имя пользователя authcookie, будет установлено
  • БД запускается только один раз, а последующие вызовы просто проверяют подлинность cookie

В случае аутентификации на основе сеанса

  • Пользователь отправляет запрос на вход в систему, отправляя свои учетные данные
  • Учетные данные сверяются с базой данных
  • Идентификатор сеанса генерируется и также сохраняется в БД
  • Cookie будет установлен с данными пользователя и сгенерированным идентификатором сессии
  • Последующие вызовы будут сравнивать идентификатор сеанса с идентификатором в базе данных
  • БД попадает каждый раз

Вопросы

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

1 Ответ

7 голосов
/ 23 июня 2011

Мне трудно переварить этот вопрос. Насколько мне известно, аутентификация на основе форм бывает двух видов: куки и без куки. Проверка подлинности на основе файлов cookie является предпочтительной.

В версии, основанной на файлах cookie, пользователь получает кук, значение которого является зашифрованным билетом проверки подлинности с помощью форм. Файл cookie зашифрован на сервере. Если ключ шифрования не используется совместно с machine.config или не перезаписан в Web.config, cookie может быть дешифрован только тем сервером, который его выпустил. Я считаю, что шифрование - это AES, которое очень безопасно.

В подходе без использования cookie полезная нагрузка cookie помещается в URL с использованием HTTPModule. Этот подход используется только тогда, когда устройство не поддерживает куки (редко). Подход без печенья не является предпочтительным - он делает AJAX более сложным.

См:

http://msdn.microsoft.com/en-us/library/1d3t3c61.aspx

и

http://support.microsoft.com/kb/910443

...