Как предотвратить перехват сеанса в сети ASP.NET MVC с помощью Identity?C#

Место общения программистов C#
Ответить
Anonymous
 Как предотвратить перехват сеанса в сети ASP.NET MVC с помощью Identity?

Сообщение Anonymous »

Контекст
У меня есть приложение ASP.NET MVC на .NET 4.8 с Identity и Owin 2.2.4. Он имеет 2FA, включенную с помощью ApplicationCookie, и работает отлично.
Проверьте эту реализацию Startup.ConfigureAuth для получения дополнительной информации:

Код: Выделить всё

  app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
LoginPath = new PathString("/Account/Login"),
ExpireTimeSpan = TimeSpan.FromMinutes(30),
SlidingExpiration = true,
CookieSecure = CookieSecureOption.Always,
CookiePath = "/",
CookieSameSite = SameSiteMode.Strict,
Provider = new CookieAuthenticationProvider
{
OnValidateIdentity = SecurityStampValidator.OnValidateIdentity(
validateInterval: TimeSpan.FromMinutes(10),
regenerateIdentity: (manager, user) => user.GenerateUserIdentityAsync(manager))
}
});
И вот как я вхожу в систему в AccountController:

Код: Выделить всё

private async Task SignInUser(ApplicationUser user, string authType)
{
await UserManager.UpdateSecurityStampAsync(user.Id);

var identity = await UserManager.CreateIdentityAsync(user, authType);
var authProperties = new AuthenticationProperties { IsPersistent = false };

AuthenticationManager.SignIn(authProperties, identity);
}

Новое требование
Пользователь может войти в систему, скопировав файл cookie .AspNet.ApplicationCookie. и вставьте его в отдельный браузер, это приведет к сбою VAPT и перехвату сеанса.
Я знаю, что если у кого-то есть этот файл cookie, он сможет войти в систему. но в этом случае в частности, я хочу, чтобы пользователь повторно вошел в систему, даже если у него есть файлы cookie и пытаюсь запустить в другом браузере.
Подходы, которые я рассматривал до сих пор:
  • Использовал недолговечный validateInterval (например, TimeSpan.FromSeconds(10)) для OnValidateIdentity в CookieAuthenticationProvider, это работало очень хорошо, но после моего исследования я обнаружил, что это увеличит нагрузку на сервер и повлияет на производительность, как это уже произошло запрашивать базу данных или хранилище пользователя каждые десять секунд.
  • Сохранение информации об устройстве или IP-адресе во время входа в систему и ее проверка на соответствие данным текущего сеанса.
Но я не уверен, что это хорошая идея, поэтому просто хотел подтвердить, есть ли более правильный подход, чем этот.
Мой вопрос : как я могу гарантировать, что пользователь не сможет войти в систему в разных браузерах, даже если они копируют файлы cookie приложения, и в этом В таком случае, как мне предложить им повторно войти в систему?
Будем очень признательны за любые предложения или идеи. Спасибо!

Подробнее здесь: https://stackoverflow.com/questions/793 ... h-identity
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»