2008-12-10 4 views
27

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

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

Любые мысли? Какие-нибудь хорошие примеры?

+0

Вы изучали использование встроенной аутентификации форм aspnet?Он использует файлы cookie, но довольно надежный с точки зрения безопасности и облегчил бы большую работу. – 2008-12-10 16:06:55

+0

Это хорошо, но мне нужно проверить несколько других вещей о пользователе из базы данных. Может ли это сделать? – Bill 2008-12-10 22:14:58

+0

Да, вы можете хранить что-либо в данных профиля пользователя. если вы не знаете, как создать свою собственную пользовательскую систему, я бы сделал это только в том случае, если последствия для безопасности были низкими – Shawn 2009-03-10 15:43:56

ответ

16

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

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

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

+1

, это не так, потому что куки могут быть захвачены и сеанс может быть украден (поскольку его часто реализуют как абстракцию над обычными файлами cookie) – 2009-01-22 11:04:21

1

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

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

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

25

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

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

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

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

0

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

Смежные вопросы