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

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

Сообщение Anonymous »

Контекст:
  • У меня есть приложение .Net MVC 4.8 с Identity и Owin 2.2.4.
    < /li>
    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))
    }
    });
    
  • И вот как я вхожу в систему в AccontController

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

    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 приложения, и в этом случае, как я могу предложить ему повторно войти в систему?Мой вопрос p>
Будем очень признательны за любые предложения и идеи. Спасибо!

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

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

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

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

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

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