【问题标题】:Is there a way to clear server side OWIN / authentication data?有没有办法清除服务器端 OWIN / 身份验证数据?
【发布时间】:2019-08-22 10:22:07
【问题描述】:

在最近一次安全扫描之后,信息安全团队表示他们不喜欢他们可以保存 .AspNet.ApplicationCookie 值并在之后再次使用它以允许用户访问该站点的事实。

阅读后,我知道这是标准行为,但我必须找到一种在用户退出时完全终止会话的方法。

我的理解有点薄,所以我的搜索很少。有没有办法解决这个问题?

【问题讨论】:

    标签: c# .net security asp.net-mvc-5 owin


    【解决方案1】:

    迟到的回复,但对于那些遇到此问题的人:

    我们通过添加一个验证指纹的自定义属性来处理这个问题。我们将属性用于登录后的任何页面。

    以下是如何实现的粗略示例。

    指纹在登录时创建并添加到缓存中:

        private void OwinSignIn(tblUser user)
        {
            var thumbPrint = Guid.NewGuid();
            var claims = new List<Claim>
            {
                ....
                new Claim(ClaimTypes.Thumbprint, thumbPrint.ToString())
            };
    
    
            MemoryCache.Default.Set(thumbPrint.ToString(), true, new CacheItemPolicy() { AbsoluteExpiration = DateTimeOffset.Now.AddMinutes(60) });
    }
    

    然后该属性会查找此指纹并采取相应措施:

    public class ValidateThumbprint : FilterAttribute, IAuthorizationFilter
    {
        public void OnAuthorization(AuthorizationContext filterContext)
    
        var identity = (ClaimsIdentity)filterContext.HttpContext.User.Identity;
        var thumbPrint = identity.Claims?.Where(s => s.Type == ClaimTypes.Thumbprint).First().Value;
    
        if (thumbPrint != null)
        {
            if (MemoryCache.Default.Contains(thumbPrint))
            {
                return;
            }
        }
            // handle invalid thumbprint
    }
    

    我不确定这是否是最好的方法和最安全的方法,但它确实会阻止在注销后保存和重复使用 cookie。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-10-09
      • 2013-03-17
      • 2013-10-12
      • 2020-04-17
      • 2021-06-21
      • 1970-01-01
      • 2019-08-15
      • 2017-11-26
      相关资源
      最近更新 更多