C # - WebForms - Может ли HttpContext.Current.SessionID дублироваться? - PullRequest
3 голосов
/ 10 августа 2011

Когда пользователь заходит на мой сайт, я сохраняю HttpContext.Current.SessionID в своей таблице журнала пользователя. Я хочу убедиться, что это может быть дубликатом? Если да, я хочу сделать столбец уникальным в базе данных. Если это может быть дублировано, есть ли что-то, что можно получить из сеанса, которое будет уникальным и никогда не будет восстановлено в будущем, как GUID?

Ответы [ 3 ]

8 голосов
/ 10 августа 2011

HttpContext.Current.SessionID будет уникальным только для текущего набора сеансов , то есть каждый идентификатор сеанса будет уникальным, когда он активен. Однако после истечения сеанса нет гарантии, что новые сеансы будут , а не с таким же идентификатором. В этом случае любые постоянные данные (основанные на идентификаторе сеанса) теперь будут ссылаться на другой сеанс.

Обратите также внимание на следующие замечания со страницы MSDN .

Значение SessionID генерируется случайным образом ASP.NET и сохраняется в не истекающий файл cookie сеанса в браузере. Значение SessionID затем отправляет файл cookie с каждым запросом в приложение ASP.NET.

Однако, если cookie очищен, сеанс перезапускается.

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

1 голос
/ 10 августа 2011

SessionID: НЕ Уникальный.

Он уникален в то время, когда он создан, но не гарантированно будет уникальным с течением времени. Например, если IIS перезапускается, он может перезапустить последовательность нумерации.

В этом случае должно быть достаточно составного первичного ключа или uniqueidentifier.

http://weblogs.asp.net/bsimser/archive/2004/09/13/228713.aspx

1 голос
/ 10 августа 2011

Почему бы не сделать идентификатор пользователя и идентификатор сеанса составным первичным ключом?Или sessionid и datetime.Это сделало бы невозможным или почти невозможным дублирование.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...