Форма авторизации: пользователь был изменен во время сеанса - PullRequest
0 голосов
/ 29 ноября 2011

У нас странный случай.

Пользователь «A», вошедший в нашу веб-систему (ASP.NET MVC, Forms Auth), некоторое время работал, затем его имя пользователя изменилось на «B»

Журналы IIS:

2011-11-29 05:59:26 GET / PlacementOrder / - 80 userA@mail.com 191.114.62.70 Mozilla / 4.0 + 200 0 0 2118 2011-11-29 05:59:26 POST / PlacementOrder / Index_GetData - 80 userB@mail.com 191.114.62.70 Mozilla / 4,0 + 200 0 0 551

Этот случай очень важен - пользователь не может видеть данные других.

У кого-нибудь есть идеи? Пожалуйста!

НАКОНЕЦ:
Мы решили, что это ошибка где-то в ASP.NET, IIS или где-то еще. Мы добавили дополнительную проверку IP в Application_AuthenticateRequest и AuthCookie.UserData.

Спасибо, что помогли нам!

Ответы [ 2 ]

1 голос
/ 30 ноября 2011

Это может быть вызвано кэшированием страницы на сервере (или прокси).

Сценарий:
UserB запрашивает страницу X, она кэшируется на сервере, затем UserA запрашивает страницу X исервер доставляет его из кэша, причем имя пользователя также кэшируется.

0 голосов
/ 29 ноября 2011

У меня есть несколько возможных идей:

1.) Приложение предоставляет функцию изменения имени пользователя, и данный пользователь использовал эту функцию

2.) Данный пользователь получил доступ к базе данных и выполнил несколько команд. Одной из команд было изменение его / ее имени пользователя

3.) Тестировщик / разработчик приложения изменил имя пользователя данного пользователя.

Самая опасная возможность - вторая. В этом случае проблема может быть вызвана атакой переполнения буфера, внедрением SQL или заражением.

EDIT:

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

4.) Это также может быть ошибка в приложении, возможно, неправильно идентифицирующая сущность пользователя и получающая другого пользователя. Например, UserID = 1, Name = 'John Smith'; UserID = 2, Имя = 'Джон Смит'. И UserID = 1, и UserID = 2 имеют одинаковые имена, но это разные сущности. Это может даже быть случай неправильной идентификации.

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